我是泽西休息服务的新手,我想在这个例子中理解在删除方法中添加@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() ;
}
}
答案 0 :(得分:1)
此处
@Consumes
注释是否可选?
是的,我甚至会说它不需要,因为你只有一个参数,它是PathParam
,这意味着它将从路径中提取出来。
注释@Consumes
用于指示JAX-RS实现如何动态解析/反序列化请求正文,以便将其作为参数以更方便的方式使用。
例如:
@POST
@Consumes("application/xml")
public void registerUser(User user) {
...
}
在此示例中,我们指示请求的主体是application/xml
类型,然后JAX-RS实现将主体的内容解析为XML,最终获得User
的实例。
NB:使用的HTTP方法对是否需要@Consumes
没有影响,只需解析身体问题。
答案 1 :(得分:1)
DELETE
对请求正文中的任何内容都不感兴趣。它应该只根据URI识别要删除的资源。
删除@Consumes
,这里错了。
另请考虑返回HTTP状态204 No Content
而不是200 OK
。删除资源后,无法返回任何内容。您也应该删除@Produces
。