通过邮递员点击我的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。

  1. 请求的接受标头是application / json
  2. @ResponseBody注释方法
  3. 类路径的杰克逊图书馆
  4. 您可以使用@RestController而不是@Controller注释。

以上是关于通过邮递员点击我的JAVA api时不支持的媒体类型的主要内容,如果未能解决你的问题,请参考以下文章

java Rest API中的登录身份验证获取不支持的媒体类型

将整数列表发送到 REST API 会引发 415(不支持的媒体类型)

不支持的媒体类型 Django API

伪造Api PATCH请求返回415“不支持的媒体类型”

错误“不支持媒体类型‘application/json’”Api GMAIL

使用 web api 上传时不支持的媒体类型