Spring mvc 不支持的媒体类型415@RequestBody不工作,但@RequestParam正在工作
我有一个模型类和一个控制器。我在PostMan的正文中发布json类型的数据。但每次我都会收到不支持的媒体类型415错误。 这是我的模型课:Spring mvc 不支持的媒体类型415@RequestBody不工作,但@RequestParam正在工作,spring-mvc,Spring Mvc,我有一个模型类和一个控制器。我在PostMan的正文中发布json类型的数据。但每次我都会收到不支持的媒体类型415错误。 这是我的模型课: public class Model1 { private String name; private String password; public Model1() { System.out.println("In the Model"); } public String getName() {
public class Model1 {
private String name;
private String password;
public Model1() {
System.out.println("In the Model");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Model1 [name=" + name + ", password=" + password + "]";
}
}
我的控制器是:
@Controller
@ResponseBody
public class EcomController {
@RequestMapping(value="/getLogin", method=RequestMethod.POST,
consumes=MediaType.APPLICATION_JSON_VALUE)
public String getLoginStatus(@RequestBody Model1 name){
return "successfully called Post"+name.toString();
}
}
我使用了HttpServletRequest来代替@RequestBody,它起了作用。但是当我使用@RequestBody时,为什么它不工作呢
这是邮递员的快照。
有两个方面可以检查此类问题
Content-type
作为application/json
(您可以
(已完成)jackson
(核心和数据绑定)
类路径中的库请参阅完整的工作代码。我在配置文件中发现了错误。 添加
解决了这个问题
说明:我的程序运行良好,但问题是如何将字符串(Json)映射到java对象。因此,默认映射类中存在一些问题。虽然jackson出现在课堂路径中,但它不起作用。
此标记将注册向@Controllers发送请求所需的HandlerMapping和HandlerAdapter。此外,它还根据类路径中存在的内容应用一些默认值。例如:如果Jackson在类路径上,则支持读写JSON。您不需要将@ResponseBody放在那里 还有一个例子是
@RestController
public class EcomController {
@PostMapping("/getLogin")
public String getLoginStatus(@RequestBody Model1 name){
return "successfully called Post"+name.toString();
}
}
如果不断出现错误,我认为问题在于servlet没有发现您的控制器已注册。。当你试图编译时,你能提供更多的详细信息,比如日志吗?你是否在请求中用值
MediaType.APPLICATION\u JSON\u value
传递Content-Type
头?你是如何调用端点的?我是从PostMan调用这个post-API的。我使用了值为JSON的内容类型头。这是Json:{“name”:“anshsh”,“password”:“vbvfjh”}我亲自运行了您的实现,它工作正常。请求正文是否具有适当的JSON格式?请确定-内容类型标题值为“application/JSON”?GET API运行良好:@RequestMapping(value=“/getUser”,method=RequestMethod.GET)public String getUser(){return“some String value”}
感谢您的支持。这个链接很有用。
@RestController
public class EcomController {
@PostMapping("/getLogin")
public String getLoginStatus(@RequestBody Model1 name){
return "successfully called Post"+name.toString();
}
}