[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/네트워크

[Network] HTTP 메서드 기초

inu 2021. 5. 16. 01:40
반응형

API URI 고민

  • Uniform Resource Indentifier. 즉, URI는 Resource를 관리하는 기준이라고 할 수 있다.
  • 따라서 리소스를 기준으로 식별하는 것이 바람직하다.
  • 예를 들어 '미네랄을 캐라' 라는 목적이 있다면 여기서 리소스는 '캐는 행위'가 아닌 '미네랄'이 되어야 한다는 것이다.
  • '리소스'와 '리소스를 대상으로 한 행위'를 분리하여 생각해야한다.
  • 물론 단순 리소스 기준으로 URI 구별이 어려울 경우에는 추가적인 식별이 필요하지만, 기본적인 원칙은 이렇다.

HTTP 메서드 종류

  • GET: 리소스를 조회한다.
  • POST: 요청 데이터 처리한다.
  • PUT: 리소스를 대체하여 등록한다. 해당 리소스가 없으면 생성한다.
  • PATCH: 리소스 내용을 부분 변경한다.
  • DELETE: 리소스를 삭제한다.
  • HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
  • OPTIONS: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
  • CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

HTTP 메서드 - GET

  • 리소스를 조회할 때 사용한다.
  • 서버에 데이터를 전달할 수 있지만 주로 query를 통해 전달한다.
  • 최근엔 메시지 바디를 사용해 데이터도 전달할 수 있지만 지원하지 않는 곳이 많기 때문에 사용을 권장하지는 않음

HTTP 메서드 - POST

  • 요청 데이터를 처리한다.
  • 메시지 바디를 통해 서버로 요청데이터를 전달한다는 것이 가장 큰 특징이다.
  • 서버는 그렇게 들어온 요청데이터를 처리한다. 어떤 처리를 수행할지는 리소스마다 따로 정해야 한다.
  • 범용성이 높아 애매한 경우 POST를 많이 사용한다.

HTTP 메서드 - PUT

  • 리소스가 있으면 대체한다.
  • 리소스가 없으면 생성한다.
  • 클라이언트가 리소스를 식별하고 해당 위치를 파악해 URI를 지정해야 한다.
  • 수정이 아닌 완전한 대체라는 점에 유의해야 한다. (덮어쓰기)

HTTP 메서드 - PATCH

  • 리소스를 부분적으로 변경한다.
  • 리소스의 특정부분을 수정하는 역할을 한다.

HTTP 메서드 - DELETE

  • 리소스를 제거한다.
  • 해당 URI에 해당하는 리소스가 제거된다.

HTTP 속성

https://ko.wikipedia.org/wiki/HTTP

  • 안전 (Safe Methods) : 호출해도 리소스에 변경이 이루어지지 않는다는 의미.
  • 멱등 (Idempotent Methods) : f(f(x)) = f(x). 한번 호출하든 여러번 호출하든 결과가 같다는 의미. (이런 속성에 근거해 서버에서 정상 응답이 없을 때 같은 요청을 시도하는 자동 복구 메커니즘을 사용할 수 있다.) 외부 요인으로 인한 리소스변경은 고려하지 않는다.
  • 캐시기능 (Cacheable Methods) : 응답 결과 리소스를 캐시해서 사용해도 되는지에 대한 의미. GET, HEAD, POST, PATCH가 캐시가능이지만, 보통 GET, HEAD 정도만 캐시로 사용한다. 나머지는 구현이 쉽지 않기 때문이다.
반응형

'💻 CS > 네트워크' 카테고리의 다른 글

[Network] HTTP API 설계 예시  (1) 2021.06.12
[Network] HTTP 메서드 활용  (0) 2021.06.10
[Network] HTTP 프로토콜  (0) 2021.04.09
[Network] NAT와 포트포워딩  (0) 2021.04.08
[Network] TCP 프로토콜  (0) 2021.04.07