项目场景:

环境:

Java 1.8

SpringBoot 2.1.9


问题描述:

Postman进行接口测试,报 406:Not Acceptable

警告信息:org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation(浏览器找不到合适的类型来显示请求接口的返回值)

代码如下

@PostMapping(value = "/login")
	public Object login(User user, HttpServletResponse response) {
		JSONObject jsonObject = new JSONObject();
		User userForBase = new User();
		userForBase.setId(userService.findByUsername(user).getId());
		userForBase.setUsername(userService.findByUsername(user).getUsername());
		userForBase.setPassword(userService.findByUsername(user).getPassword());
		if (!userForBase.getPassword().equals(user.getPassword())) {
			jsonObject.put("message", "登录失败,密码错误");
			return jsonObject;
		} else {
			String token = tokenService.getToken(userForBase);
			jsonObject.put("token", token);

			Cookie cookie = new Cookie("token", token);
			cookie.setPath("/");
			response.addCookie(cookie);

			return jsonObject;

		}
	}

原因分析:

这段代码的意思是返回 json 类型的响应数据, 与我们接口的返回值不同, 所以无法返回


解决方案:

1.将代码改为

 @RequestMapping(value = "/login", method = RequestMethod.GET,produces = "applications/json;charset=UTF-8")

2.将返回类型改为map

Map<String, Object> map=new HashMap<String, Object>();

                    .
                    .
                    .
                    .


String token = tokenService.getToken(userForBase);

                map.put("token",token);
                Cookie cookie = new Cookie("token", token);
                cookie.setPath("/");
                response.addCookie(cookie);

                return map;

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐