반응형
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 속성
- 안전 (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 |