通过邮递员点击我的JAVA api时不支持的媒体类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过邮递员点击我的JAVA api时不支持的媒体类型相关的知识,希望对你有一定的参考价值。
我是REST-api开发的初学者,我在通过邮递员点击我的java api时遇到了这个错误:“不支持的媒体类型”。我的Pojo课程是:
public class OrderRequest implements Serializable{
private static final long serialVersionUID = 1L;
public OrderRequest() {}
private long orderNo;
private int rateOverallExperience;
private String apiName;
private Double apiVersion;
public long getOrderNo() {
return orderNo;
}
public int getRateOverallExperience() {
return rateOverallExperience;
}
public String getApiName() {
return apiName;
}
public Double getApiVersion() {
return apiVersion;
}
public void setOrderNo(long orderNo) {
this.orderNo = orderNo;
}
public void setRateOverallExperience(int rateOverallExperience) {
this.rateOverallExperience = rateOverallExperience;
}
public void setApiName(String apiName) {
this.apiName = apiName;
}
public void setApiVersion(Double apiVersion) {
this.apiVersion = apiVersion;
}
}
我的控制器类是:
@RestController
public class OrderRatingController {
public OrderRatingController() {}
@Autowired
private OrderRequestService ordRequestService;
@Autowired
private ProductRatingService prdRatingService;
@RequestMapping(value = "/saveOrderRatings", method = RequestMethod.POST
,consumes = MediaType.APPLICATION_JSON_VALUE) //"application/json"
public OrderRequest saveOrder(@RequestBody OrderRequest requestObj) {
System.out.println("Inside saveOrder. Json Object recieved : " + requestObj);
//...OTHER CODE...
return requestObj;
}
}
我正在使用Jetty服务器(版本:9.4.0.M0)来测试我的api。
在Postman>Body tab>raw
,我选择了JSON(application/json)
并发送:
{“orderNo”:“737521F547D00D26”,“rateOverallExperience”:4,“apiName”:“giveitemrating”,“apiVersion”:“1.0”}
Postman Header相关细节以pic / snap为准:
当我发送这个,我得到一个Unsupported Media Type
错误。有人对此有任何想法吗?
编辑:正如评论中所建议的,更新的控制器类a如下:@RequestMapping(value = "/saveOrderRatings", method = RequestMethod.POST
,consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE, headers = "Accept=application/json")
进一步在POSTMAN gui:Accept
中增加了一个标题,其值为application/json
。
这是发送请求后邮递员请求的样子(仍然显示错误,但更改了结果标题):enter image description here
您根本不需要配置消耗或生成属性。 Spring将根据以下因素自动提供JSON。
- 请求的接受标头是application / json
- @ResponseBody注释方法
- 类路径的杰克逊图书馆
- 您可以使用@RestController而不是@Controller注释。
以上是关于通过邮递员点击我的JAVA api时不支持的媒体类型的主要内容,如果未能解决你的问题,请参考以下文章
java Rest API中的登录身份验证获取不支持的媒体类型
将整数列表发送到 REST API 会引发 415(不支持的媒体类型)