REST-API vs GraphQL-API

박찬효·2022년 9월 7일
0

REST란?


  • "Representational State Transfer"의 약자, 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.

  • HTTP URL을 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

REST API 정의


  • REST 기반으로 서비스 API를 구현하는것
  • 최근 OpenAPI,마이크로 서비스 등을 제공하는 업체 대부분은 REST API를 제공한다.

출처: https://www.bacancytechnology.com/blog/rest-api-best-practices

REST API의 주요 구성요소:

고객 — 통신을 시작하는 사용자 측(자신의 장치에서)에서 시작된 클라이언트 또는 프로그램.
섬기는 사람 — API를 기능 및 데이터에 대한 액세스로 사용하는 서버.
자원 — 서버가 클라이언트에 전송하는 모든 콘텐츠(비디오, 텍스트, 사진).

출처:https://velog.io/@ellyheetov/REST-API

CRUD Operation

  • C =create , REST-API(axios) = POST
  • R =read, RREST-API(axios) = GET
  • U= update, REST-API(axios) = PUT
  • D = delete, REST-API(axios) = DELETE
  • 목록 조회

총 5개의 API를 만들어야 한다.

REST API의 특징

  • 사내시스템들도 REST기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.

  • REST는 HTTP표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.

REST API 설계 기본 규칙

  1. URL는 정보를 자원을 표현해야 한다.
    • resource는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
    • resource의 도큐먼트 이름으로는 단수 명사를 사용해야한다.
    • resource의 컬렉션 이름으로는 복수 명사를 사용해야한다.
    • resource의 스토어 이름으로는 복수 명사를 사용해야한다.
  2. 자원에 대한 행위는 HTTP Method로 표현한다.
    • URL에 HTTP Method가 들어가면 안된다.
    • URL에 행위에 대한 동사 표현이 들어가면 안된다.
    • 경로 부분 중 변화하는 부분은 유일한 값으로 대체한다.

REST API 설계 규칙

  1. 슬래시 구분자( / )는 계층 관계를 나타내는데 사용한다.

  2. URL 마지막 문자로 슬래시 ( / )를 포함하지 않는다.

  3. 하이픈( - )은 URL 가독성을 높이는데 사용한다.

    • 불가피하게 긴 URL경로를 사용하게 된다면 하이픈을 사용해 가독석을 높여준다.
  4. 밑줄( _ )은 URL에 사용하지 않는다.

  5. URL 경로에는 소문자가 적합하다.

  6. 파일확장자는 URL에 포함하지 않는다.

  7. 리소스 간에는 연관 관계가 있는경우
    - /리소스명/리소스ID/관계가 있는 다른 리소스명


RESTful의 개념

RESTful이란?

  • RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.

  • RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아니다.

RESTful의 목적

  • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는것

  • RESTful한 API를 구현하는 근본적인 목적이 성능 향상에 있는건 아니라 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 동기이다.

RESTful 하지 못한 경우

  • CRUD 기능을 모두 POST로만 처리하는 API

  • route에 resource,id 외의 정보가 들어가는 경우


GraphQL이란?

  • GraphQL은 Facebook에서 만든 Graph Query Language로 어플리케이션 레이어 쿼리 언어이다.

  • 웹 클라이언트가 데이터를 서버로 부터 효울적으로 가져오는 것이 목적이다.

  • 타입 시스템을 사용하여 쿼리르 실행하는 서버사이드 런타임이다.

  • 특정한 데이터베이스나 스토리지에 귀속 되어 있지 않으며, 기존 코드와 데이터에 의해 대체된다.

GraphQL 장점

😝 장점

  • 클라이언트가 필요한 데이터만 반환할 수 있다.
  • 확장이 용이하다.

😭 단점

  • 백엔드,클라이언트 개발자 양쪽 다 러닝커브가 있다.
  • 캐싱 기능의 구현이 복잡하다.
  • 요청이 text로 날아가기 때문에 File 전송 등을 구현하기가 어렵다.

GraphQL 정리

GraphQL은 REST API의 한계점을 해결하고자 나온 API를 위한 쿼리 언어

GraphQL은 웹 클라이언트가 데이터를 서버로 부터 효울적으로 가져오는 것이 목적이고 클라이언트가 필요한 데이터만 반환할 수 있다.

profile
개발자가 되기 위한 1인

0개의 댓글