API URI 설계

 

  • URI의 역할은 리소스를 식별하는 것이기 때문에 URI에 행동을 담아선 안 됩니다. 즉, 회원 조회에서 회원은 리소스이고 조회는 행동이기 때문에 URI에는 회원에 대한 리소스만을 표현해야하며 행위는 HTTP 메소드로 표현해야 합니다.

 

  • 서비스가 커질 경우 URI를 리소스만을 가지고 표현이 불가능할 수도 있습니다. 이럴 경우 예외적으로 /orders/{orderId}/start-delivery와 같이 행위를 URI에 담는 경우도 있습니다. 이를 컨트롤 URI라고 부릅니다.




GET

 

  • GET 메서드는 주로 리소스를 조회하기 위한 목적으로 사용됩니다.

 

  • 서버에 전달하고 싶은 데이터는 query를 통해서 전달합니다.

 

  • 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아서 권장되지 않습니다.




POST

 

  • 데이터 생성을 요청하거나 특정 프로세스를 요청하기 위한 목적으로 사용됩니다.

 

  • 요청에 필요한 데이터는 주로 바디에 담아서 요청합니다.

 

  • 다른 메서드로 처리하기 애매하거나 불가능할 때 주로 POST를 사용합니다.




PUT

 

  • 리소스를 대체하거나 해당 리소스가 없으면 생성해야 할 때 사용합니다.

 

  • 서버에 name, age 데이터가 있는 상태에서 name만을 PUT으로 요청하면 기존 서버에 있는 name과 age를 없애고 이번에 요청한 name으로 대체할 때 사용합니다.




PATCH

 

  • 리소스를 부분 업데이트할 때 사용합니다.




DELETE

 

  • 리소스를 삭제할 때 사용합니다.

 

  • body는 사용할 수 없기 때문에 만약, 삭제 시 body가 필요하다면 주로 POST로 대체합니다.




기타 HTTP 메서드

 

HEAD

 

  • GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환합니다. 주로 캐시된 데이터가 최신인지 여부를 확인할 때 사용하는 메서드입니다.




OPTIONS

 

  • 대상 리소스에 대한 통신 가능 옵션을 확인할 때 사용합니다. 주로 CORS의 Preflight Request에서 본 요청이 가능한지 여부를 확인할 때 사용합니다.




HTTP 메서드의 속성

 

 

안전( Safe Method )

 

  • 리소스를 변경하지 않는 메서드를 안전 메서드라고 합니다.




멱등성( Idempotent )

 

  • 한 번 호출하든 여러 번 호출하던 결과는 똑같은 메서드를 멱등 메서드라고 합니다.

 

  • GET, PUT, DELETE는 여러 번 호출해도 결과는 똑같기 때문에 멱등 메서드입니다.

 

  • 예를들어서 POST로 결제를 요청할 경우 여러 번 호출할 수록 결제가 여러 번 되기 때문에 비멱등 메서드입니다.

 

  • 멱등과 비멱등을 구별해야 하는 이유는 클라이언트가 메서드에 대한 응답을 제대로 못받았을 때 해당 요청을 다시 해도 되는가?를 판단할 때 사용합니다.




캐시 가능( Cacheable )

 

  • HTTP 메서드에 따라서 응답 결과 리소스를 브라우저에 캐시하는 것을 의미합니다.

 

  • GET, HEAD, POST, PATCH는 캐시가 가능한 메서드입니다. 하지만, POST와 PATCH는 본문 내용까지 캐시 키로 고려해야 하는데 구현이 쉽지 않기 때문에 주로 GET, HEAD만 캐시로 사용합니다.




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

HTTP 헤더의 종류와 사용법  (0) 2023.01.30
HTTP 상태코드란?  (0) 2023.01.29
HTTP 메시지 구조  (0) 2023.01.29
HTTP/0.9 ~ 2.0의 각 특징  (1) 2023.01.29
HTTPS( HyperText Transfer Protocol over Secure )란?  (0) 2023.01.24

+ Recent posts