만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/backend&devOps

[HTTP] RESTful API

D36choi 2022. 4. 16. 17:59
728x90

restful api 를 설명하라

rest 하게 잘 구성된 api 를 의미합니다. rest (Representational State Transfer) 하다는 것은
URI에 자원을 명시하고 HTTP method로 행위를 정의해서 서버로부터 데이터를 받거나 서버측에 데이터를 반영시키도록 하는 걸 명시적으로 잘 구현했다는 것이라고 생각합니다.

 

REST 규약을 지키는 것은 여러 룰이 있겠으나 가장 와닿는건 아래 세가지입니다.

  • HTTP 여야 함
  • stateless 해야 함
  • 보안, 로드밸런싱 등 서버 내부구조를 클라이언트는 모르게 계층화해야함

HTTP to CRUD

HTTP 메서드를 CRUD (기본으로 데이터 처리를 위해 갖추어야할 4가지 인터페이스 : 위키 발췌) 에 매핑하자면 아래와 같습니다.

  • POST : Create
  • GET : Read
  • PUT,PATCH : Update
  • DELETE : Delete

put 과 patch 차이

  • put : 존재하는 자원의 전체 바꿉니다
  • patch : 존재하는 자원의 일부만을 바꿉니다 put, patch를 쓰면 꼭 그렇게 되리라는 개념보다는 그렇게 규약을 설정하는 것이 이롭다는 것입니다.
    내부 로직은 개발자가 정하기 나름이지만은요.

GET 과 POST 의 차이

  1. 캐싱 가능 여부
    get 은 캐싱 가능하지만 post는 아닙니다


  2. response body 존재여부
    post 만이 body를 갖습니다. get은 uri 에 필요 자원을 명시해야합니다. 따라서 민감데이터는 명시하면 안됩니다.
    또한 uri 길이 제한이 있기 때문에 get 또한 요청문의 길이제한이 있다고 봐야합니다.


  3. 멱등성
    get 은 언제나 동일한 결과를 보여줘야 합니다. (only read이므로)

 

 

참고

https://www.redhat.com/ko/topics/api/what-is-a-rest-api

 

REST API(RESTful API, 레스트풀 API)란 - 서버, 구현, 사용법

REST API(RESTful API)란 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 뜻합니다. api 서버, rest api 구현 및 사용법을 설명합니다.

www.redhat.com

https://im-developer.tistory.com/166

 

[HTTP] HTTP Method 정리 / GET vs POST 차이점

GET이나 POST는 매우 자주 쓰는 HTTP 메소드들이다. 아마 제일 많이 쓰지 않나 싶다. 근데 정확히 두 개가 어떻게 다른지, 어떤 특징을 가지고 있는지 잘 모르겠어서 정리해보려고 한다. 아래 글들은

im-developer.tistory.com