@Path私はこれが次のように注釈されているクラスを持っています:
@Path("widgets")
@Produces(MediaType.APPLICATION_XML)
public class WidgetResource {
@GET
public Response getWidgets(@QueryParam("limit"))
{
//This class returns the plural noun, a list of widgets
//...}
@GET
@Path("widget/{id}")
public Response getWidgetById(@PathParam("id") long id)
{
//This class returns a single widget by id
//...}
テストクライアントを起動すると、localhost / widgetsは期待どおりにマップされますが、getWidgetByIdメソッドがにマップされる場合localhost/widgets/widget/{id}。これは私が望んでいることではありません-私が欲しいlocalhost/widgets and localhost/widget/{id}
クラスレベルでアノテーションを省略しようとしました@Pathが、JerseyがこのクラスをRESTリソースとして認識できません(クラスレベルにがない限り、ScanningResourceConfigとClassNameResourceConfig-の両方をリソースとしてロードできませんでした@Path)。
WidgetResource(醜い)回避策は、クラス間でメソッドをクラスとクラスに分割することだと思いWidgetsResourceます。これらのメソッドは両方とも同じクラスのリソースを共有するため、これはひどい解決策だと思いますが、REST-ful localhost/widget(単一のエンティティの場合)とlocalhost/widgets(複数の場合)が本当に必要です。
何かが足りないのですか?@Pathメソッドに注釈を付けるだけで(動作させることができませんでした)、Jerseyにリソースクラスとしてクラスを取得させる方法はありますか?そうでない場合は、絶対マッピング(@Path(/widget/{id}))またはいくつかを強制できますか?相対マッピング(@Path(../widget/id)-どちらも実際には機能しません-私が求めているもののアナロジーにすぎません。ありがとう!