我是jersey rest服务的新手,我想在此示例中了解将@Consumes注释添加到delete方法的实用程序,在这种情况下,这是运行良好的代码(在视频中),@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() ;
    }
}

最佳答案

@Consumes注释在这里是可选的吗?

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

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

例如:

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

在此示例中,我们指示请求的主体为application/xml类型,然后JAX-RS实现将主体的内容解析为XML,以最终获得User的实例。

注意:使用的HTTP方法对是否需要@Consumes无效,而仅需要解析正文。

10-06 15:37