작성
·
135
0
안녕하세요! 항상 좋은 강의 감사드립니다 ^^
post 와 put 신규등록을 하는 경우가 헷갈리는데요
클라이언트가 등록될 리소스의 uri를 모르는 상황이라고 설명해주셨는데 예를들어 회원을 가입할 때 회원 id는 유니크 해야되고 사용자가 회원 id를 입력을 합니다 ( ex: testid)
클라이언트는 본인이 입력한 id이기 때문에 알고 있습니다.
/member/testid
그리고 거꾸로 파일을 등록할땐 (ex : test.jpg)를 등록하면 서버에는 동일한 파일명이 존재할 수 있으니 식별자를 알 수 없고등록후에 test.jpg와 매핑된 아이디를 전달받아야 됩니다. 이런 상황이라면 예시와 똑같은 업무지만 post와 put 을 거꾸로 적용하면 될까요?
답변 1
0
안녕하세요. jung님
이 부분에서는 2가지 기준을 가지고 판단을 해야 합니다.
1. 리소스를 식별할 수 있는 기준을 클라이언트(PUT)가 가지고 있는가 서버(POST)가 가지고 있는가
2. 리소스를 변경할 때 클라이언트가 해당 리소스의 모든 데이터를 다 보낼 수 있는가(PUT)
예시로 들어주신 member의 경우 1번은 맞지만, 2번에서 (실제 수정하는 상황을 떠올려 보면)애매합니다. 따라서 POST를 사용하는 것이 더 나은 선택이라 생각합니다.
예시로 들어주신 파일의 경우 식별자를 서버에서 만들기 때문에 1번에서 기준이 애매하므로 POST를 사용하시면 됩니다.
1번만 생각해보면 PUT을 사용해도 될 것 같지만, 2번 때문에 실제 프로젝트에서 PUT을 사용하는 일은 매우 적고, 대부분 POST로 진행하게 됩니다.
(파일 업로드를 하면서 클라이언트가 지정한 파일명을 기준으로 리소스 URI가 생성된다면 PUT이 적합합니다.)
감사합니다.