【发布时间】:2014-06-12 12:49:32
【问题描述】:
我在一个项目中使用 spring 和 restlet。
我添加了一个过滤器,用于检查请求 URI 是否有效并返回有效 URI 列表(资源发现机制)。
我必须根据 ACCEPT 标头使用转换器服务(或连接服务)以 json/xml 格式返回响应。在过滤器中,我得到响应对象。我创建了一个自定义类的对象并使用有效的 url 填充它。为了将此对象传递给响应,我使用 json 序列化程序创建对象的字符串表示(媒体类型 - json)并设置响应实体。
@Override
protected int beforeHandle(Request request, Response response) {
String relativeUri = request.getResourceRef().getRemainingPart();
if(mappings.containsKey(relativeUri)) {
return Filter.CONTINUE;
}
ArrayList<String> nextLevelURIs = getNextLevelResourcesUri(request);
if(nextLevelURIs == null) {
return Filter.CONTINUE;
}
Items items = getItems(nextLevelURIs);
response.setEntity(serializer.serialize(items), MediaType.APPLICATION_JSON);
return Filter.STOP;
}
要实现转换器服务的功能,我必须检查 ACCEPT 标头并创建相应的表示(json/xml)。但我已经在其他资源类中使用转换器服务了。
有没有办法在过滤器中使用转换器服务。如果我设置 json 字符串表示并返回 Filter.CONTINUE,转换器服务能否将实体从 json 表示转换为 xml 表示,反之亦然,具体取决于 ACCEPT 标头?
谢谢。
【问题讨论】:
标签: java rest restlet restlet-2.0