Java restlet内容类型,使用restlet进行版本控制
我通过将restlet与camel一起使用来公开rest服务 我已经公开了一个rest服务作为一端,并在另一端重写了process方法。 代码如下所示Java restlet内容类型,使用restlet进行版本控制,java,apache-camel,restlet,Java,Apache Camel,Restlet,我通过将restlet与camel一起使用来公开rest服务 我已经公开了一个rest服务作为一端,并在另一端重写了process方法。 代码如下所示 from("restlet:/service/serviceName/{serviceId}?restletMethod=PUT").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { //I
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"))
问题仍然没有解决。还有其他选择吗?所以您的路线是从。这意味着您向它发送请求
String contentType=(String) exchange.getIn().getHeader("Content-Type");
if (contentType.equals("application/json")) {
//do something
}
注意,由于RESTLET是区分大小写的,所以需要验证头是否称为Content-Type,而不是Content-Type或类似的名称。这就是为什么您需要添加日志记录以查看exchange上的标头名称。因此您的路由是从。这意味着您向它发送请求
String contentType=(String) exchange.getIn().getHeader("Content-Type");
if (contentType.equals("application/json")) {
//do something
}
注意,由于RESTLET是区分大小写的,所以需要验证头是否称为Content-Type,而不是Content-Type或类似的名称。这就是为什么您需要添加日志以查看exchange上标题的名称。Nice one,是的,它对我有用。但是,在这种情况下,请求将进入process方法,然后我们将验证内容类型。我希望在it自身的初始阶段进行同样的验证,例如,如果我们使用jersey/cxf,并且我们试图发送一个内容类型错误的请求,那么it自身的服务将不允许处理该请求。此处是否可以进行相同类型的验证?请参阅camel restlet文档,您可以在restlet URI中设置参数CamelAcceptContentType,这样您就可以限制为您选择的内容类型。但是,在这种情况下,请求将进入process方法,然后我们将验证内容类型。我希望在it自身的初始阶段进行同样的验证,例如,如果我们使用jersey/cxf,并且我们试图发送一个内容类型错误的请求,那么it自身的服务将不允许处理该请求。此处是否可以进行相同类型的验证?请参阅camel restlet文档,您可以在restlet URI中设置参数CamelAcceptContentType,以便将其限制为您选择的内容类型。