0

我想按如下方式格式化我的 REST 接口:

myurl.com/resources/{resourceId}

我有选择地希望人们能够提供以下变体来指定返回格式:

myurl.com/resources.json/{resourceId}

我正在使用 Jersey 来提供我的 REST 服务。处理这些参数的最佳方法是什么?

应该使用不同的@PATH 表示法创建一个单独的类,还是我可以有一个类并解析出该参数?是否有任何内置注释可以处理这个问题,类似于@PathParam 或@QueryParam?

4

1 回答 1

0

已经有一种机制(正如@digitaljoel 已经说过的那样) - HTTP Accept 标头。

Jersey 对您的用例没有任何直接支持,但有类似的东西 - 媒体类型映射功能,请参阅 http://jersey.java.net/nonav/apidocs/1.12/jersey/com/sun/jersey/api/ core/ResourceConfig.html#PROPERTY_MEDIA_TYPE_MAPPINGShttp://jersey.java.net/nonav/apidocs/1.12/jersey/com/sun/jersey/api/core/ResourceConfig.html#getMediaTypeMappings%28%29

不幸的是,它只处理最后具有此“参数”的 URL,但获取 UriConnegFilter 源(http://java.net/projects/jersey/sources/svn/content/trunk/jersey )应该不是很困难/jersey-server/src/main/java/com/sun/jersey/api/container/filter/UriConnegFilter.java?rev=5698)并修改它以满足您的需要。

于 2012-05-09T11:46:39.073 回答