spring开发restful接口,put方法错误
来源:互联网 发布:欧美 知乎 编辑:程序博客网 时间:2024/06/06 04:46
在用spring开发rest接口,表单提交用的put方式,content-type是application/x-www-form-urlencoded
代码如下
@RequiresPermissions("act:model:edit")@RequestMapping(value = "/act/service/model/{modelId}/save", method = RequestMethod.PUT)@ResponseStatus(value = HttpStatus.OK)public void saveModel(@PathVariable String modelId, @RequestBody MultiValueMap<String, String> values) { try { Model model = repositoryService.getModel(modelId); ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());@RequiresPermissions("act:model:edit")@RequestMapping(value = "/act/service/model/{modelId}/save", method = RequestMethod.POST)@ResponseStatus(value = HttpStatus.OK)public void saveModel(@PathVariable String modelId, @RequestBody MultiValueMap<String, String> values) { try { Model model = repositoryService.getModel(modelId); ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
用restful client测试,一直报400,参数解析错误,跟踪代码到spring核心包,
HttpServletRequest servletRequest = (HttpServletRequest)webRequest.getNativeRequest(HttpServletRequest.class);ServletServerHttpRequest inputMessage = new ServletServerHttpRequest(servletRequest);InputStream inputStream = inputMessage.getBody();。。。final PushbackInputStream pushbackInputStream = new PushbackInputStream(inputStream);int b = pushbackInputStream.read();if(b == -1) { return this.handleEmptyBody(methodParam);}
抛出了requestbody为空的异常。原因是在inputMessage.getBody()的时候就是错的
ServletServerHttpRequestpublic InputStream getBody() throws IOException { return (InputStream)(isFormPost(this.servletRequest)?getBodyFromServletRequestParameters(this.servletRequest):this.servletRequest.getInputStream());}private static boolean isFormPost(HttpServletRequest request) { String contentType = request.getContentType(); return contentType != null && contentType.contains("application/x-www-form-urlencoded") && "POST".equalsIgnoreCase(request.getMethod());}
分析可得:spring要求使用application/x-www-form-urlencoded方式提交的表单要用post方式
1 0
- spring开发restful接口,put方法错误
- spring mvc RestFul风格PUT方法修改上传文件
- RESTful api接口开发与Spring MVC
- 【SpringMVC】用restful风格接口写DELETE或PUT请求时遇到405错误
- Spring MVC+restful接口开发,首写初探
- RESTFUL接口开发
- Restful接口实现方法
- Spring MVC使用RESTful风格的PUT请求
- Spring MVC restful风格之put and delete
- Spring RestTemplate 访问 restFul 接口
- RESTFUL服务中POST/PUT/PATCH方法的区别
- RESTFUL服务中POST/PUT/PATCH方法的区别
- RESTFUL服务中POST/PUT/PATCH方法的区别
- Restful PUT 方法,server端接受不到参数
- restful接口之Jersy开发
- Java后台框架篇--Spring与Restful风格API接口开发
- Swagger+Spring mvc生成Restful接口文档
- Swagger+Spring mvc生成Restful接口文档
- 如何改变cxgrid的列标题颜色?
- 微信小店开发之跳转微信商品页接口(9)
- 【Java每日一题】20170308
- jdk工具类____java进制之间的转换
- 不安装oracle客户端,用plsql连接oracle
- spring开发restful接口,put方法错误
- 图数据库简介
- 自动获取计算机名、用户名、IP地址、子网掩码和默认网关
- VFS之vfsmount挂载点描述
- 《ACM程序设计》书中题目 J
- Crtl + Alt + F1 黑屏
- 学会使用Screen,不再惧怕SSH中断(树莓派、Ubuntu和Centos 6.5)
- 禁止电脑管家弹广告的解决办法
- c++作业2