java - 通过 Postman 访问我的 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”}
图片/快照中的邮递员标题相关详细信息:
当我发送这个时,我收到一个Unsupported Media Type
错误。有人对此有任何想法吗?
编辑:正如评论中所建议的,更新的控制器类如下:@RequestMapping(value = "/saveOrderRatings", method = RequestMethod.POST
,consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE, headers = "Accept=application/json")
进一步在 POSTMAN gui 中添加了一个标题:Accept
with value application/json
。
这是发送请求后邮递员请求的样子(仍然显示错误但结果标头发生变化): 在此处输入图像描述
解决方案
您根本不需要配置消费或生产属性。Spring 将根据以下因素自动提供 JSON。
- 请求的接受头是 application/json
- @ResponseBody 注释方法
- 类路径上的杰克逊库
- 您可以使用 @RestController 代替 @Controller 注释。
推荐阅读
- linux - bash -c 或 zsh -c 对它执行的字符串有限制吗?
- logging - MS FILETIME 作为数据记录的绝对时间戳似乎是一个不错的选择
- c# - 如何解决不同类型的服务的 IEnumerable
- mysql - 取回子查询内列表中的匹配值
- python - Django - 将新模型与他们自己的页面结合起来
- reactjs - 更新 MapComponent 状态时的性能问题
- javascript - 在 Firefox 中捕获 Alt、Ctrl 或 Shift
- python - Python 创建 %USERPROFILE% 文件夹
- ubuntu-12.04 - Postfix 收不到邮件。Helo 命令 未经授权
- java - 带节点的堆栈的推送方法