인프런 커뮤니티 질문&답변

현집님의 프로필 이미지

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

HTTP 메서드 - GET, POST

POST 사용 예시 질문

작성

·

319

2

강사님 안녕하세요:)

강의 내용 중 POST 예시에서

"기존 자료에 데이터 추가 ex) 한 문서 끝에 내용 추가하기" 에서 궁금한 점이 생겨 질문드립니다.

위 경우 저는 PATCH 나 PUT을 사용해서 /contents/{id} 이런식으로 기존 내용에 추가해야 할 것이라고 생각했는데, 왜 POST를 사용하는지 궁금합니다. 

또한, POST를 사용할 경우 http body에 기존 문서의 id를 넣어서 전송해야 되는 것 맞나요?

그리고 뒤에 HTTP API 설계 예시 강의  "HTTP API -컬렉션 회원관리 시스템" 부분에서 PATCH와 PUT을 사용하기 애매한 경우에는 POST를 사용하여 수정하라고 하셨는데, 어떤 경우가 애매한지 궁금합니다("기존 자료에 데이터 추가"가 그 애매한 경우인가요..?).

쓰다보니 질문이 많아졌네요,,ㅜ

강의를 들으면서 많이 배우고 있습니다. 정말 감사합니다!!

답변 2

5

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 현집님

강의 내용 중 POST 예시에서 "기존 자료에 데이터 추가 ex) 한 문서 끝에 내용 추가하기"

이 부분은 사실 자주 사용하는 예시는 아닙니다. 해당 예시를 자세히 설명드리면 로그파일이 있는데, 그 로그파일 끝에 로그를 추가 하는 것입니다. 예를들어서 다음과 같을 때

GET /logs/a01

로그1줄

로그2줄

로그3줄

이렇게 실행하면

POST /logs/a01

body: 로그 4줄

결과

로그1줄

로그2줄

로그3줄

로그4줄

이런식으로 된다는 예시입니다. 물론 서버에서 POST /logs/{id}로 보내면 해당 리소스에 데이터를 추가합니다. 라고 사전에 개발자가 스펙을 정의해야 합니다. 이 경우 생각하신 것 처럼 PATCH를 사용해도 됩니다. 그런데 PUT은 리소스 전체를 다 보내야 하기 때문에, 적절하지 않습니다.

마지막에 PATCH와 PUT을 사용하기 애매한 경우는 실제 개발을 해보면 상당히 많이 만나게 됩니다.

단순히 해당 리소스만 조금 변경하는게 아니라, 해당 리소스를 변경하는 것 처럼 보이지만, 전체 프로세스의 상태가 변경되는 경우에는 POST를 사용하는게 맞다 생각합니다. 예를 들어서, 단순히 주문의 상태를 대기 -> 배달시작으로 변경하려고 PATCH를 생각했는데, 실제로는 여러 프로세스가 엮여서 돌아가게 되면, 이 경우는 특정 리소스 하나를 변경했다기 보다는 프로세스 자체를 진행한 것이기 때문에, POST를 사용하는게 더 적절하다 생각합니다.

감사합니다.

1

현집님의 프로필 이미지
현집
질문자

답변 감사합니다!!

현집님의 프로필 이미지

작성한 질문수

질문하기