Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is @Consumes annotation required or optional in the DELETE method Jersey

Tags:

java

rest

jersey

I'm new in jersey rest service and I want to understand in this example the utility of adding @Consumes annotation to a delete method in this case this is the code it's work well (in a video ), is the @Consumes annotation optional here ? Thanks in advance

 @path("activities")
 public class ActivityResource {

    @DELETE
    @Path("{activityId}")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
    public Response delete(@PathParam("activityId")String activityId) {
        activityRepository.delete(activityId);
        return Response.ok().build() ;
    }
}
like image 881
e2rabi Avatar asked Jan 25 '26 11:01

e2rabi


2 Answers

Is the @Consumes annotation optional here ?

Yes, I would even say that it is not needed as you have only one parameter and it is a PathParam which means that it will be extracted from the path.

The annotation @Consumes is used to indicate the JAX-RS implementation how to dynamically parse/deserialize the body of your request in order to have it as parameter in a more convenient type.

For example:

@POST
@Consumes("application/xml")
public void registerUser(User user) {
    ...
}

In this example, we indicate that the body of the request is of type application/xml, the JAX-RS implementation will then parse the body's content as an XML to finally get an instance of User.

NB: The HTTP method used has no effect on whether or not @Consumes is needed, only the need to parse the body matter.

like image 124
Nicolas Filotto Avatar answered Jan 26 '26 23:01

Nicolas Filotto


A DELETE should not be interested in anything that is in the request body. It should only identify the resource to be deleted based on the URI.

Remove the @Consumes, it is wrong here.

Also think about returning a HTTP status 204 No Content instead of 200 OK. After deleting a resource, there is nothing to return. You should also remove the @Produces because of this.


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!