put과 post에 대한 질문입니다.
363
작성한 질문수 8
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
여기에 질문 내용을 남겨주세요.
put은 리소스를 완전 대체하기 때문에 데이터의 부분적인 필드만 보낼 시에 부분적인 필드만 대체되거나 새롭게 추가된다고 하셨는데, post로 put을 대체하여 사용할 경우도 마찬가지의 동작이 되나요? 가령 전체 데이터필드는 "username", "age"가 있는데 post로 "age" 필드만 바디로 보낼 경우, put과 같이 "username"없이 "age"만 대체, 추가가 되는 건지요?
아니면 애초에 put은 리소스에 식별자를 추가해야되기 때문에 post로 대체 될 수 없는건가요?
답변 2
1
안녕하세요. 낌상님, 공식 서포터즈 David입니다.
이 부분은 구현하기 나름입니다.
PUT의 경우, RFC문서에서 다음과 같이 정의하고 있습니다.
The PUT method requests that the state of the target resource be created or replaced with the state defined by the representation enclosed in the request message payload.
https://httpwg.org/specs/rfc7231.html#PUT
만약, 어떤 서버의 PUT 메서드를 사용하는 특정 API가 해당 문서에 충실하게 구현했다면, 강의에서 언급한 것과 같이 리소스를 대체하는 방식으로 동작할 것입니다.
POST는 PUT과 다른 정의를 가집니다. 다만, POST를 PUT처럼 구현할 순 있습니다.
식별자 추가의 경우, POST로 보낼 때 바디에 함께 보내면 되는 부분이라 큰 문제가 되진 않습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
put과 post는 HTTP 메서드 중에 두 가지입니다. 각각의 역할과 동작 방식이 다르기 때문에 put으로 대체할 수 있는지에 대한 질문이군요.
put은 요청된 데이터를 리소스의 완전한 형태로 대체하는 역할을 합니다. 즉, 요청한 데이터로 리소스를 완전히 대체하게 됩니다. 그래서 부분적인 필드만 보내는 경우, 해당 필드 이외의 데이터는 제거될 수 있습니다.
반면에 post는 리소스를 생성하거나 업데이트할 때 사용됩니다. put과 달리 데이터를 전송할 때 식별자를 함께 보내지 않아도 됩니다. 요청된 데이터를 리소스에 추가하거나 업데이트하게 됩니다.
따라서 “age” 필드만 바디로 보낼 경우, put과 post는 동작 방식이 다릅니다. put의 경우는 “age” 필드와 함께 “username”을 제외한 나머지 필드를 삭제하거나 대체할 가능성이 있습니다. 반면에 post의 경우는 “age” 필드만 업데이트할 수 있는데, “username” 필드는 그대로 유지되거나 변경되지 않을 수 있습니다.
요약하자면, put과 post는 역할과 동작 방식에 차이가 있기 때문에 put으로 대체할 경우와 post로 대체할 경우에 따라 동작이 다르게 됩니다. 따라서 put과 post는 서로 동일한 동작을 하는 것으로 대체할 수 없습니다.
더 자세한 내용은 HTTP 스펙이나 관련된 참고자료를 확인해보시는 것을 추천드립니다. 다른 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!
캐시무효화시 그냥 no-store만 넣어되지 않나요?
0
71
2
API의 헤더와 바디에 대한 문의 입니다.
0
70
2
수정폼과 수정
0
66
1
쿠키에 대해 질문드려요!
0
88
2
서버에서 캐시 검증 헤더를 직접 처리해야 하나요?
0
86
1
http api get, post 멱등
0
40
1
컬렉션의 개념
0
49
1
시작라인에 들어가는 요청 대상 경로는 상대 경로 아닌가요?
0
54
1
PATCH 는 PUT처럼 멱등이여야 하지 않나요?
0
81
1
리소스 질문드립니다
0
56
1
IP 패킷 질문입니다.
0
59
1
html from, http api
0
75
2
브라우저 캐시가 60초 유효하다는게 무슨 뜻일까요
0
120
1
stateless 무상태 예제가 생각났는데. 저가 생각 한게 맞는지 궁금합니다.
0
99
1
URI 및 URL 질문, 왜 자바(스프링)에서는 이렇게 나누었는지?
0
141
1
host와 port
0
106
1
tcp/ip는 연결을 유지? 아니면 유지하지 않음?
0
145
1
다음 강의 커리큘럼 질문!!
0
130
2
캐시 개념에 대해서 설명하시지는 않으시는건가요?
0
113
1
클라이언트가 patch, delete 요청 시 알아야 하는 url
0
91
1
html form 형태 전송시 new, edit 등 컨트롤 리소스를 사용하는 이유
0
168
2
비 연결성(connectionless) 강의에서 질문입니다~
0
140
1
PATCH를 사용하지 못할 때 왜 POST?
0
162
2
협상과 우선순위3 질문드립니다.
1
130
1





