开发者社区> waylau> 正文

Jersey REST 服务中 DELETE 请求无法接收 entity body 作为参数

简介:
+关注继续查看

问题

在用 Jersey 构建 REST 服务时,当试图用 Ajax 传递一个 JSON 对象 作为参数执行 DELETE 方法时,后台接收到的对象为 null.

服务器的资源类写法为

@DELETE @Path("pojojson")
@Consumes(MediaType.APPLICATION_JSON)
public String deletePojoJsonBody(@QueryParam("name") String name ) {
 return "You delete " + name;
}

由下图,可以看到调用该接口时,接受到的参数为 null

原因

在新版的 HTTP 1.1 协议里面有如下描述:

A payload within a DELETE request message has no defined semantics; sending a payload body on a DELETE request might cause some existing implementations to reject the request.

中文意思是:

DELETE 请求消息中的 payload (metadata 和 body content) 没有定义语义;在DELETE 请求上发送一个 payload body 可能会导致一些现有的实现拒绝该请求。

即,不应该在 DELETE 请求中使用 entity body 来传递参数.

解决

修改代码,将参数写在 URI 里面即可:

@DELETE @Path("pojojson")
@Produces(MediaType.TEXT_PLAIN)
public String deletePojoJson(@QueryParam("name") String name ) {
 return "You delete " + name;
}

参考

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
POST @PostMapping接收实体类属性为null
POST @PostMapping接收实体类属性为null
35 0
第三十三章 使用 CSP 进行基于标签的开发 - 使用Hyperevents #server和#call调用服务器端方法
第三十三章 使用 CSP 进行基于标签的开发 - 使用Hyperevents #server和#call调用服务器端方法
15 0
REST-assured 实现 GET, POST, PUT, PATCH, DELETE 请求
REST-assured 实现 GET, POST, PUT, PATCH, DELETE 请求
134 0
restTemplate发送携带header参数的get和post请求demo
restTemplate发送携带header参数的get和post请求demo
79 0
java发送post请求,使用multipart/form-data的方式传递参数
java发送post请求,使用multipart/form-data的方式传递参数
269 0
使用 ABAP 代码创建 TR - Transport Request(传输请求)
使用 ABAP 代码创建 TR - Transport Request(传输请求)
66 0
JavaWeb - RESTful风格 GET、POST、PUT、DELETE 前端请求示例
JavaWeb - RESTful风格 GET、POST、PUT、DELETE 前端请求示例
145 0
【小家Java】Servlet规范之---请求(request):Servlet中如何获取POST请求参数?(使用getParameter())
【小家Java】Servlet规范之---请求(request):Servlet中如何获取POST请求参数?(使用getParameter())
567 0
【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method ‘POST‘ not supported (附带其余好几个坑)(上)
【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method ‘POST‘ not supported (附带其余好几个坑)
441 0
【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method ‘POST‘ not supported (附带其余好几个坑)(下)
【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method ‘POST‘ not supported (附带其余好几个坑)(下)
305 0
+关注
waylau
大道至简! https://waylau.com/
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载