Study/cs (computer science)

REST API/RESTful API Design Guide/REST 디자인 패턴/Http Methods 는 무엇인가 #2

개발하는 주디씨 2023. 1. 4. 14:34

 

REST의 개념을 이해했다면 이젠 REST API의 디자인을 살펴보고자 한다.

 

REST API Design Guide

 

1) URL에 Resource를 표현해야 한다.

GET /members/1

Resource는 동사보다는 명사를 사용하고 대문자보다는 소문자를 사용하여 표현해야 하고,  document(도큐먼트) 이름으로는 단수 명사를 사용해야 한다. collection과 store의 명은 복수 명사를 사용해야 한다.

 

 

2) Resource에 대한 행위는 Http Method (GET, POST, PUT, DELETE)로 표현한다.

Rest Http Method

이때, URL에 Http Method가 들어가면 안 된다. 또한 URL 행위에 대한 동사 표현이 들어가면 안 된다. CRUD 기능을 나타내는 것은 URL에 사용하지 않는다는 것이다.

 

🔔 잘못된 예

GET /books/show/1

 

 

🔔 수정 후

GET /books/1

 

2) ID는 하나의 특정 Resource를 나타내는 고유 값이어야 한다.

 

🔔book을 생성하는 URL 은 POST /students 이다. id가 10인 book을 삭제하는 URL은?

DELETE /students/10

 

 

3) 슬래시 구분자는 계층관계이며, URL 마지막 문자슬래시(/)를 포함하지 않는다.

https://printf-hellojudyworld.tistory.com/

 

 

4) Resource 간에 연간관계가 있는 경우 다음과 같이 표현한다.

 

🔔 소유 'has' 관계를 표현할 때

GET /book/{bookid}/viewers

 

 

 

Http Methods

 

1) GET : Resource를 받아올 때

자원의 상태를 변경하지 않기 때문에 safe method라고 불린다. 만약 POST, PUT을 통해 데이터가 변경되지 않는다면 동일한 API를 여러 번 호출 시에도 동일한 결과를 얻을 수 있다.

 

 

2) POST : 새로운 Resource를 추가할 때

서버의 상태를 변경시킬 때 사용하며 응답코드로 201를 받아야 정상적으로 처리되었음을 확인한다.

 

 

3) PUT : 존재하는 Resource를 변경할 때

Resource가 존재하지 않는 경우 API는 새로운 Resource를 생성할 수 있다. 이 경우 응답코드 역시 201(Created)을 받으며 존재하는 자원이 변경된 경우 200(Ok) 이나 204(No Content)를 받는다.

 

🔔 POST는 여러 개의 자원에 수행되는 반면 PUT은 단일 자원에만 수행된다는 차이점이 있다.

 

 

4) DELETE : Resource를 삭제할 때

DELETE 메서드를 요청하면 자원을 삭제하게 되는데 반복적으로 호출한 경우 결과가 바뀌지 않는다. 이미 제거가 완료되었다는 상태코드 404(NOT FOUND)를 받는다.

 

 

5) PATCH : Resource 데이터를 부분적으로 변경할 때

PUT과 동일하게 Resource를 변경할 수 있는데 PUT의 경우에는 완전히 자원을 대체하는 경우 사용하며 PATCH는 부분적 변경할 때 사용한다. 단, 모든 브라우저나 서버, 앱 애플리케이션 FW에서 사용할 수 있는 것은 아니니 사용할 수 있는 먼저 확인해야 한다.