在Restlet 2.3(SE)我試圖使用媒體類型來控制版本。我當前的嘗試包括在我的呼入路由註冊新的擴展:Restlet使用自定義媒體類型
@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()
。
問題修復。該修復將在2.3.3中提供。 –