最近在做的以后后台管理的项目,采用前后端分离的方式进行开发,前端采用的是 vue-element-admin 版本,版本为4.2.1,后端服务使用的是springboot进行开发,接口数据交互遵循restful风格进行封装。在这里一定要说明一下,使用 vue-element-admin 模板,不是说从git上pull下来就能直接用的,
一定要先看一下官方文档!本次出现的问题就是没有看官方文档导致的!具体情况下面详细说明。先上代码:后端服务接口代码如下:
@RestController@RequestMapping(value = "/sys/dict")public class AuthSysDictController {
private static Logger logger = CommonUtils.getLog(AuthSysDictController.class); @Resource private AuthSysDictService authSysDictService; @PostMapping(value = "add") public Result add(@RequestBody AuthSysDict dict, HttpServletRequest request) {
logger.debug("dict-update-----" + Json.toJson(dict)); authSysDictService.add(dict); return Result.success("添加成功", dict); }}
前端请求接口的代码如下:
/** * 新增字典记录 * @param data * @returns {AxiosPromise} */export function dictAdd(data) {
return request({
url: '/sys/dict/add', method: 'post', data })}
问题:后端服务接口同通过postman工具,以及手写HTTPClient测试,均能获取请求数据,说明后端的服务接口是没有问题的。
在用vue-element-admin封装的request.js工具类发送post请求时,后端服务接口获取不到request请求体的内容,并 返回异常信息 java.io.EOFException: Unexpected EOF read on the socket。 具体异常信息如下:
org.springframework.http.converter.HttpMessageNotReadableException: I/O error while reading input message; nested exception is java.io.EOFException: Unexpected EOF read on the socket at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:216) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:157) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(R