42월드 팀원이 기존 api를 살펴보는 중 좋아요 api의 메소드에 대한 이야기가 나왔다. 좋아요에 어떤 의견들이 나왔는지 앞서, 좋아요 기능이 어떻게 되어있는지 알아보자.
좋아요 버튼을 누를 시 동작하는 api
그런데 여기서 좋아요를 감소시키는 경우, reactionArticleRepository
의 좋아요 데이터를 삭제 시키는데 POST가 맞을까?
의견 1
생성과 삭제 둘 다 있으니 PUT이 조금 더 어울릴 것 같다
의견 2
생성과 삭제 둘 다 하니 Restful하지 않다. 아예 post / delete 분리되어야 하지 않나?
-> 빠르게 좋아요를 누를 경우 post-delete-post-delete 순으로 api를 보내야 하는데 실제 지연이 생기면서 post-delete-delete-post으로 동작할 수 있다.
나도 생성/삭제 나누는게 맞다고 생각하는데 저렇게 순서가 나눠지는 경우 문제가 생길 수 있다고 하니 보류했다. -> 멘토님께 질문 드릴 예정
여기서 POST와 PUT중 어떤 걸 사용해야 하는지 이야기를 나누고 있는 와중에 POST와 PUT이 어떤 차이가 있는지 한번 더 찾아보고 싶었다. 대략적으로 POST는 생성, PUT은 업데이트로 알고 있었지만 조금 더 알아보자.
참고 도서 : HTTP 완벽 가이드 3장
POST
POST 메서드는 서버에 입력 데이터를 전송하기 위해 설계되었다.
PUT
PUT 메서드는 서버가 요청의 본문을 가지고 요청 url의 이름대로 새 문서를 만들거나, 이미 URL이 존재한다면 본문을 사용해서 교체한다.
각주)
POST는 서버에 데이터를 보내기 위해 사용한다.
PUT은 서버에 있는 리소스에 데이터를 입력하기 위해 사용한다.
참고 링크: REST – PUT vs POST
alticles
alticles
에 더해 해당 리소스의 Resource Identifier를 나타내줘야 한다 EX alticles/id
GET /device-management/devices : Get all devices
POST /device-management/devices : Create a new device
GET /device-management/devices/{id} : Get the device information identified by "id"
PUT /device-management/devices/{id} : Update the device information identified by "id"
DELETE /device-management/devices/{id} : Delete device by "id"
좋아요는 어떨까? 좋아요를 누를 시
확실히 POST로 보인다.