Jax-Rs で CREATED HTTP ステータス コードを返す方法


created(URI location) クラスの javax.ws.rs.core.Response を使用します.通常、201 HTTP ステータス コードを返す場合は、新しい REST リソースが利用可能な場所を含む location ヘッダーを返す必要があります.

import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.ws.rs.*;
import javax.ws.rs.core.*;

@Path("messages")
@Stateless
@Tag(name = "Message")
public class MessageRestResource {

  @Inject private MessageService messageService;

  @POST
  @Consumes(MediaType.TEXT_PLAIN)
  @Operation(summary = "Create message")
  @ApiResponses({
    @ApiResponse(
        responseCode = "201",
        description = "Message successfully created."),
    @ApiResponse(responseCode = "403", description = "Forbidden")
  })
  public Response createMessage(
      @Parameter(description = "Message") String message, @Context UriInfo uriInfo)
      throws JAXBException {
    Message created = messageService.createMessage(message);
    UriBuilder builder = uriInfo.getAbsolutePathBuilder();
    builder.path(created.getUuid().toString());
    return Response.created(builder.build()).build();
  }


スニペットでは、UriBuilder メソッド builder.path(created.getUuid().toString()) が、新しく作成されたメッセージの識別子 ( uuid ) を、uriInfo から取得した要求の絶対パスに追加します.


Shared with ❤️ from Codever. Use 👉 copy to mine functionality to add it to your personal snippets collection.