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)