【发布时间】:2018-12-31 16:10:39
【问题描述】:
我是 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) 并发送:
{ “订单号”:“737521F547D00D26”, “rateOverallExperience”:4, "apiName": "giveitemrating", “api版本”:“1.0” }
图片/快照中的 Postman Header 相关详细信息:
当我发送这个时,我收到一个Unsupported Media Type 错误。有人对此有任何想法吗?
编辑:如 cmets 中所建议,更新的控制器类 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
【问题讨论】:
-
尝试在您的请求中添加
accept标头(值application/json)。您可能还想将produces = MediaType.APPLICATION_JSON_VALUE添加到您的@RequestMapping。 -
headers = "Accept=application/json" 在请求映射中添加这一行并尝试
-
@Arnaud 先生,感谢您的即时回复。我在 Postman UI 中更新了
@RequestMapping(value = "/saveOrderRatings", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)和两个标头Content-Type和accept,其值为application/json。这是你建议的吗?它仍然显示与标题相同的错误。
标签: java rest controller postman