Rest API

willy4202·2022년 4월 27일
0

단어에 대한 사전적인 원론적인 개념을 알아보고,

프로젝트를 다루기 위해서 다기능의 구현을 위해 어떠한 요청을 해야하는지에 대해 알아보자. (Path parameter, Query parameter)


RESTful API란 무엇인가.

API 시스템을 구현하기 위한 아키텍처 중에 가장 널리 사용되는 형식이다.

  • graphql,SOAP, GRPC, REST ...

REST는 타 아키텍처 보다 차별화된 점

  • 별도의 라이브러리, 서드파티 설치 필요가 없다.
  • 학습에 있어 러닝커브가 비교적 짧다.
  • 기본적인 구조를 파악하기 쉽다.

SOAP와 REST

인벨롭하는 방식과 구조화된 방식

Graphql은 엔드포인트 하나로 모든 정보를 처리한다.
즉 uri를 여러갈래로 분리시킬 필요 없고,
한명의 골키퍼가 하나의 길목을 지키고 있는 방식이다.

RESTful

  • 대표적인 스테이트 전송법

한 클라이언트가 uri를 http method로 제안하면, API를 거쳐 데이터베이스를 훑고 항목을 받아와서 건낸다. 결국 데이터를 요청하기 위한 일종의 메뉴판을 REST API라고 생각하면 좋다.

RESTful API는 그 자체만으로도 API의 목적을 쉽게 이해할 수 있다.
그러나 표준규약이 없어, 안티패턴으로 작성되는 경우가 생길 수 있다. 즉, 돌아가긴 하지만, 비효율적이거나 비생산적인 패턴을 만들수도 있다.

의미 없는 코드는 없다. 모든 코드를 보면서 사유하고 고민이 필요하다.
하나하나 짚고 넘어가면서 끊임없이 생각하자.

상품에 관한 데이터에 접근하기 위해 하나하나 분절해서 request를 던지는 것이다.


API 설계 규칙

  • URI 정보는 명확하게 표현해야한다.
    • resource는 명사를 사용한다.
      데이터는 복수형태로 표기해라
  • resource에 대한 행위를 method(get,post,put,delete)로 표현한다.
    • URI에 method가 포함되선 안된다.
      ex) ~~GET~~ delete/user/1
    • URI에 동사가 포함되서는 안된다.
      ex) ~~GET /user/show/1~~ -> GET /users/1
  • resource 사이에 연관 관계가 있는 경우
    • GET /users/{user_id}/profile
  • 파일의 경우 payload 포맷을 나타내기 위한 파일 확장자를 포함시키지 않는다.
    • GET user/1/profile-photo.jpg
    • GET user/1/profile-photo 이때 payload의 포맷은 headers에 accept를 사용한다.
  • / 구분자를 사용하여 자원의 계층 관계를 나타내는데 사용한다.
  • URI 마지막 문자로 /를 포함하지 않는다.
  • 불가피하게 URI가 길어지는 경우 -을 사용하여 가독성을 높인다.
  • 대문자 사용을 피하도록 규정하고 있다.

Path parameter

products 를 불러왔을땐 배열이 오지만, 숫자로 나타내면 딱 하나만 나타내게 된다..!

업데이트도 가능하다.

put과 patch에 대한 차이점을 분명하게 알고가자.
get과 post도 어떤 상황에서 사용되는지 분명하게 인지하자

delete

개별 항목에 대한 id를 통해 delete로 처리 가능하다.

특정 자원에 대한 형태를 경로를 통해 나타내는 것이 path parameter


query parameter - filtering

물음표 뒤쪽의 value들이 넘어와서 filter를 하는 것도 가능하다.

오더링을 통해서 정렬하는 것도 가능하다.

오프셋과 리밋을 활용해서도 가능하다.


Path Parameter, Query Parameter

그럼 어느 상황에서 사용해야할까?
정답이랄것도 할 것 없이 개발자의 의도와 기획에 따라 방법이 달라진다.


status code

profile
같은 문제에 헤매지 않기 위해 기록합니다.

0개의 댓글