Java 在DELETE方法中@Consumes注释是必需的还是可选的

Java 在DELETE方法中@Consumes注释是必需的还是可选的,java,rest,jersey,Java,Rest,Jersey,我是新泽西州的rest服务,我想了解在本例中向删除方法添加@Consumes注释的实用性。在本例中,这是代码,它工作得很好(在视频中),这里的@Consumes注释是可选的吗?提前谢谢 @path("activities") public class ActivityResource { @DELETE @Path("{activityId}") @Consumes(MediaType.APPLICATION_JSON) @Produces({MediaTy

我是新泽西州的rest服务,我想了解在本例中向删除方法添加
@Consumes
注释的实用性。在本例中,这是代码,它工作得很好(在视频中),这里的
@Consumes
注释是可选的吗?提前谢谢

 @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() ;
    }
}
这里的
@消费
注释是可选的吗

是的,我甚至想说它是不需要的,因为您只有一个参数,它是一个
PathParam
,这意味着它将从路径中提取

注释
@Consumes
用于指示JAX-RS实现如何动态解析/反序列化请求体,以便以更方便的类型将其作为参数

例如:

@POST
@Consumes("application/xml")
public void registerUser(User user) {
    ...
}
在本例中,我们指出请求主体的类型为
application/xml
,然后JAX-RS实现将主体内容解析为xml,以最终获得
User
的实例


NB:所使用的HTTP方法对是否需要
@消费
没有影响,只需要解析主体内容。

A
DELETE
不应该对请求主体中的任何内容感兴趣。它应该仅基于URI标识要删除的资源

删除
@Consumes
,这里是错误的


还可以考虑返回HTTP状态,而不是
200OK
。删除资源后,将不会返回任何内容。因此,您还应该删除
@products

如果我有多个参数,它将保持可选状态?这取决于您的参数类型,如果您只有
PathParam
它仍然是不必要的,因此我只有在我有数据要使用POST&PUT在正文中反序列化时才能使用此注释,这就像SpringREST中的“RequestBody”谢谢方法
POST
PUT
没有关系,它可以是您想要的任何方法,唯一的规则是“仅当正文中有数据要反序列化时才使用此注释”可以使用
@products
来支持在响应正文中返回详细信息的错误情况。