restlet 内容类型,使用 restlet 进行版本控制

restlet content type, versioning with restlet

我正在使用 restlet 和 camel 公开休息服务。

我一方面公开了休息服务,另一方面我重写了流程方法。 代码如下所示,

from("restlet:/service/serviceName/{serviceId}?restletMethod=PUT").process(new Processor() {
  @Override
    public void process(Exchange exchange) throws Exception {
    //Implementation goes here.
  }
}

我这里有两个问题。

我尝试了以下选项。

setHeader(Exchange.CONTENT_TYPE, simple("application/json"))

setHeader(Exchange.ACCEPT_CONTENT_TYPE, simple("application/json"))

问题依旧没有解决。还有其他选择吗?

所以你的路线是从。这意味着您向它发送了一个请求。

  1. 从 fiddler、chrome 或其他地方用你想要的 header 向它发送请求。

  2. 将日志记录添加到打印出包括 headers 在内的整个交换的路由。在这里您会找到 Content-Type,以及所有其他 HTTP header。

  3. 要访问它们,您需要像访问任何其他 header.

  4. 一样访问 Exchange 上的 header

我不明白你为什么要在那里设置 headers。

例如,在您的流程代码中,您可以这样做:

String contentType=(String) exchange.getIn().getHeader("Content-Type");
        if (contentType.equals("application/json")) {
//do something
}

请注意,您需要验证 header 被称为 Content-Type 而不是 content-type 或类似的东西,因为 RESTLET 区分大小写。这就是为什么您需要添加日志记录以查看交易所 header 的名称。