학습주제
HTTP Methods
학습내용
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
HTTP 메서드는 CURD API를 설계할 때 기본이 되는 개념. 꼭 알고 있어야 한다.
HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냅니다. 리소스=polls, choice 같은 것들을 의미. question 대상으로 조회, choice를 대상으로 투표하는 행위. 요청 메서드를 "HTTP 동사"라고 부르기도 합니다.
GET
POST
PUT
DELETE
프로그래머스의 질문답변 페이지를 예로 든다.
질문을 생성해본다.
개발자 도구 - 네트워크를 열어놓는다. 어떤 요청이 들어오면 네트워크 탭에 표시가 된다.
가장 먼저 questions에 대한 POST가 발생했다.
POST는 CREATE에 해당한다. 또한 질문이 생긴 화면이 등장했다.
또한 생긴 질문에 대해서 44233
GET 요청이 들어온 것을 알 수있다. 하나의 질문을 가져오기 위해서 방금전 생성한 새로만든 질문을 주세요라는 GET 요청이다.
이번엔 질문 수정을 해보도록 한다.
보기 편하게 하기위해 지운다.
수정하기를 눌렀다.
개발자 도구를 보면 이번엔 PUT이 들어가 있다. 주소를 보면 숫자도 들어가 있는데, 만들때는 그 리소스가 무엇인지 정의할 수 없기 때문에 들어가 있지 않았다. 질문생성은 question에 대해 POST를 날렸는데, 수정을 할 때는 질문번호를 찍고, 그것에 대해 PUT 요청을 하였다.
이번엔 질문 삭제를 해본다
이번에도 삭제를 해보면
질문번호 44233
에 대해 날라가는데 메소드가 DELETE이다. Status Code가 초록색인 것으로 보아 잘 삭제된듯 하다.
vs code로 넘어와서
우리가 일전에 form을 썼을 때 메소드를 POST를 사용했었다. 의문인 점은 우리가 무언가 새로운 것을 만든 것도 아니고, choice.vote의 값을 1 증가시키는 행위만 했기 때문이다. PUT이라고 생각될만 하다. 그러나 사용자 입장에서 보면 그렇지 않다. 사용자는 choice에 vote가 저장되는지 아님 나의 투표가 따로 저장되는 지 알 방법이 없기 때문이다. 개발자 입장에선 choice 객체에 votes라는 카운트로 구현해놨기 때문에 update라고 생각될 수 있으나, 사용자 입장에선 알 방법이 없다. 코드 리뷰를 하다보면 어떤 기능을 POST, PUT을 해야될 지 고민해야할 때가 온다.