source

POST 후에 REST로 콘텐츠를 반송해도 될까요?

goodcode 2022. 9. 3. 13:16
반응형

POST 후에 REST로 콘텐츠를 반송해도 될까요?

레스트렛는 【】보다 은 POST입니다.acceptRepresentation★★★★★★ 。

DB에 을 201하고 클라이언트에만, 의 DB는 201(SUCCESS_CREATED)입니다.acceptRepresentationvoid.

제 경우 클라이언트가 해당 리소스에 액세스할 수 있도록 식별자를 반환해야 합니다.

URL을 /resource를 송신합니다.는 「POST」입니다. DB에 새 행을 추가하고 그 주소는 다음과 같아야 합니다./resource/{id}보낼 필요가 있다.{id}.

내가 뭘 잘못하고 있나요?REST 원칙에서는 POST 후에 반품할 수 있습니까?만약 그렇다면 어떻게 하면 좋을까요?그렇지 않다면 이 상황을 어떻게 처리할 수 있을까요?

REST 에서는, 통일된 인터페이스에 준거할 필요가 있는 것 뿐입니다.즉, HTTP 사양에 따라 POST가 해야 할 일을 해야 한다고 되어 있습니다.관련된 스펙의 견적은 다음과 같습니다.

오리진 서버에 리소스가 작성된 경우 응답은 201(작성)이어야 하며 요청 상태를 기술하고 새 리소스를 참조하는 엔티티 및 Location 헤더가 포함됩니다(섹션 14.30 참조).

여기서 알 수 있듯이, 새로 작성된 리소스가 있는 위치를 클라이언트에 나타낼 수 있는 두 개의 장소가 있습니다.Location 헤더에는 새 리소스를 가리키는 URL이 있어야 합니다.또한 엔티티와 함께 엔티티를 반환할 수도 있습니다.

acceptRepresentation()을 덮어쓰는 것과 post()를 덮어쓰는 것의 차이는 잘 모르겠습니다만, 이 예는 POST에서 응답을 반환하는 방법을 나타내고 있습니다.

나는 답장 본문에 있는 어떤 것도 보내지 않을 것이다.[ Location : ]를 새로 작성한 자원의 (풀) URL로 설정합니다.

설명에 따르면 다음과 같은 의미가 있습니다.

  1. 게시물을 게시하여 작성하다
  2. 다음 두 가지 사항을 충분히 알고 대응합니다.
    1. 생성(201년)이 발생했음을 나타냅니다.
    2. 새로운 것을 찾을 수 있는 위치(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

반응형