【问题标题】:Custom media type Consume rest call post operation自定义媒体类型 消费 rest call post 操作
【发布时间】:2017-12-05 13:11:02
【问题描述】:

需要消耗如下的休息服务。球衣客户

@POST
@Produces("application/vnd.app.mail-service+json")
@Consumes("application/vnd.app.mail-service+json")
public TempResponse submit(TempRequest request) {

}

这里的 TempRequest 是 JAXB 对象。

从 javascript 使用服务。已将 Accept 和 Content-Type 设置为“application/vnd.app.mail-service+json”并发送 json 请求

{
  "TempRequest" :{
       "TempR1" : {
          "id" : "1212",
          "name" : "app",
        }
  }
}

在提交请求时,服务应用程序中收到的请求正文为空,如果我尝试在消费和生产中使用“+xml”并更改内容类型,则请求正文不为空。

使用 Jersy-cleint 和 jax-rs 以及在 spring 4.3.7 应用程序中部署的 jacson-core 和 asl - 1.19.3

【问题讨论】:

  • TempRequest 是什么?是你的自定义类吗?
  • 自定义类

标签: json rest jersey jax-rs spring-rest


【解决方案1】:

我不确定你为什么使用application/vnd.app.mail-service+json 而不是application/json

同样需要改成

@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)

我希望你在 TempRequest 类中也有类似的变化,这是一个 JAXB 类。

@XmlRootElement(name="TempRequest")
@XmlAccessorType(XmlAccessType.FIELD)
public class TempRequest {

    @XmlElement(name="TempR1") 
    private TempR1 temp;

    public TempRequest() {}

    // Getter and setter methods
    // ...
}

【讨论】:

  • 服务已经启动并运行,需要使用自定义媒体类型的服务。我是否仍需要在使用部分创建 jaxb 对象以使其工作
  • 球衣将采用自定义对象的实例化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 2015-06-02
相关资源
最近更新 更多