POST 후에 REST로 콘텐츠를 반송해도 될까요?
레스트렛는 【】보다 은 POST입니다.acceptRepresentation
★★★★★★ 。
DB에 을 201하고 클라이언트에만, 의 DB는 201(SUCCESS_CREATED)입니다.acceptRepresentation
void
.
제 경우 클라이언트가 해당 리소스에 액세스할 수 있도록 식별자를 반환해야 합니다.
URL을 /resource
를 송신합니다.는 「POST」입니다. DB에 새 행을 추가하고 그 주소는 다음과 같아야 합니다./resource/{id}
보낼 필요가 있다.{id}
.
내가 뭘 잘못하고 있나요?REST 원칙에서는 POST 후에 반품할 수 있습니까?만약 그렇다면 어떻게 하면 좋을까요?그렇지 않다면 이 상황을 어떻게 처리할 수 있을까요?
REST 에서는, 통일된 인터페이스에 준거할 필요가 있는 것 뿐입니다.즉, HTTP 사양에 따라 POST가 해야 할 일을 해야 한다고 되어 있습니다.관련된 스펙의 견적은 다음과 같습니다.
오리진 서버에 리소스가 작성된 경우 응답은 201(작성)이어야 하며 요청 상태를 기술하고 새 리소스를 참조하는 엔티티 및 Location 헤더가 포함됩니다(섹션 14.30 참조).
여기서 알 수 있듯이, 새로 작성된 리소스가 있는 위치를 클라이언트에 나타낼 수 있는 두 개의 장소가 있습니다.Location 헤더에는 새 리소스를 가리키는 URL이 있어야 합니다.또한 엔티티와 함께 엔티티를 반환할 수도 있습니다.
acceptRepresentation()을 덮어쓰는 것과 post()를 덮어쓰는 것의 차이는 잘 모르겠습니다만, 이 예는 POST에서 응답을 반환하는 방법을 나타내고 있습니다.
나는 답장 본문에 있는 어떤 것도 보내지 않을 것이다.[ Location : ]를 새로 작성한 자원의 (풀) URL로 설정합니다.
설명에 따르면 다음과 같은 의미가 있습니다.
- 게시물을 게시하여 작성하다
- 다음 두 가지 사항을 충분히 알고 대응합니다.
- 생성(201년)이 발생했음을 나타냅니다.
- 새로운 것을 찾을 수 있는 위치(Location 헤더)
다른 건 다 필요 없어
두 가지 다른 질문:
REST 애플리케이션 패턴은 POST 시 데이터 반환을 지원합니까?
저는 REST가 분명히 그것을 거부한다고 생각하지 않지만, 선호하는 치료법은 대럴의 대답에 명기되어 있습니다.
RESTlet 프레임워크에서는 POST 중에 데이터를 반환할 수 있습니까?
네, void를 반환하더라도 Resource를 확장하는 클래스에서는 getResponse() 메서드를 통해 Response 객체에 대한 전체 액세스 권한이 있습니다.따라서 원하는 데이터를 사용하여 getResponse().setEntity()를 호출할 수 있습니다.
원하는 형식으로 출력합니다.다음과 같은 경우가 있습니다.
<success>
<id>5483</id>
</success>
또는 다음 중 하나를 선택합니다.
{ "type": "success", "id": 5483 }
당신이 평소에 무엇을 하느냐에 달렸어요.데이터를 기대하지 않는 경우 데이터를 무시해야 하지만 적절하게 처리하고자 하는 모든 고객은 데이터를 무시할 수 있어야 합니다.
로케이션 리다이렉트가 아닌 엔티티 본문을 사용하여 201 Created with entity body로 응답할 경우 응답에 표시되는 리소스를 가리키는 Content-Location 헤더를 포함하는 것이 좋습니다.
이렇게 하면 클라이언트가 응답 주체가 실제로 생성된 자원이 아닌 '창작자'의 새로운 상태를 나타낸다고 가정할 수 있는 잠재적 혼란을 피할 수 있다.
> POST /collection
> ..new item..
< 201 Created
< Location: /collection/1354
< Content-Location: /collection/1354
< <div class="item">This is the new item that was created</div>
언급URL : https://stackoverflow.com/questions/1829875/is-it-ok-by-rest-to-return-content-after-post
'source' 카테고리의 다른 글
Jackson 2.2의 Object Mapper에서 JSON을 예쁘게 인쇄했습니다. (0) | 2022.09.03 |
---|---|
숫자에서 유니코드 문자 생성 (0) | 2022.09.03 |
왜 "a"가 C로!= "a"가 되는 거죠? (0) | 2022.09.01 |
웹팩/Grails/Gradle 프로젝트에 서드파티 JSlibs 추가 (0) | 2022.09.01 |
++i와 i++의 차이점은 무엇입니까? (0) | 2022.09.01 |