Java 在DELETE方法中@Consumes注释是必需的还是可选的
我是新泽西州的rest服务,我想了解在本例中向删除方法添加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
@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方法对是否需要@消费没有影响,只需要解析主体内容。ADELETE
不应该对请求主体中的任何内容感兴趣。它应该仅基于URI标识要删除的资源
删除@Consumes
,这里是错误的
还可以考虑返回HTTP状态,而不是200OK
。删除资源后,将不会返回任何内容。因此,您还应该删除@products
。如果我有多个参数,它将保持可选状态?这取决于您的参数类型,如果您只有PathParam
它仍然是不必要的,因此我只有在我有数据要使用POST&PUT在正文中反序列化时才能使用此注释,这就像SpringREST中的“RequestBody”谢谢方法POST
或PUT
没有关系,它可以是您想要的任何方法,唯一的规则是“仅当正文中有数据要反序列化时才使用此注释”可以使用@products
来支持在响应正文中返回详细信息的错误情况。