【发布时间】:2015-08-22 16:11:38
【问题描述】:
在 Restlet 2.3 (SE) 中,我尝试使用媒体类型来控制版本。我目前的尝试涉及在我的入站路由中注册新的扩展:
@Override
public Restlet createInboundRoot() {
...
getTunnelService().setExtensionsTunnel(true);
getMetadataService().addExtension("vnd.myapp.v1", MediaType.valueOf("application/vnd.myapp.v1+json"));
getMetadataService().addExtension("vnd.myapp.v2", MediaType.valueOf("application/vnd.myapp.v2+json"));
...
}
然后我的资源接口设置如下:
public interface UsersResource {
@Options
void getCorsSupport();
@Get("vnd.myapp.v1")
Collection<User> representV1() throws Exception;
// Should be the default if */* is specified
@Get("json | vnd.myapp.v2")
Collection<User> representV2() throws Exception;
}
然后我尝试按如下方式指定媒体类型:
http://localhost:8080/api/users?media=vnd.myapp.v1
这个想法是,如果有人将媒体类型指定为vnd.myapp.v1,他们将得到representV1() (JSON),如果他们将媒体类型指定为vnd.myapp.v2,他们将得到representV2() (JSON),并且(可选)如果他们什么都不问他们得到representV2()。通过上述设置,无论有什么要求,我总是会回复representV2()。
【问题讨论】:
标签: java json restlet restlet-2.0 media-type