Use created(URI location)
of the javax.ws.rs.core.Response
class. Usually when you return the 201 HTTP Status Code, you should return a location
header with the location where the new REST resource is available.
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(); }
In the snippet the UriBuilder
method builder.path(created.getUuid().toString())
appends the identifier of the newly created message (uuid
) to the absolute path of the request, which was obtained from the uriInfo
Shared with ❤️ from Codever. Use 👉 copy to mine functionality to add it to your personal snippets collection.
Top comments (0)