0

Jersey(REST Framework for Java)を初めて使用し、ルートパスを共有する2つの別々のクラスで2つのリソースをセットアップしようとしていますが、問題が発生しています。だから、私は次のようなものを持っています:

@Path("/users")
public class User extends RestSupport {

    @GET
    @Path("/{user_uuid}")
    public String get(@PathParam("user_uuid") String uuid) {    
        return "Hello User " + uuid;
    }
}

上記のクラスは動作します。ただし、別のクラスに子リソースを作成したい。しかし、これを行うと、URI の名前付けの競合が発生するようです。ここでは、特定のユーザーのすべてのペットを取得したいと考えています。

@Path("/users")
public class Pets extends RestSupport {

    @GET
    @Path("/{user_uuid}/pets")
    public String get(@PathParam("user_uuid") String uuid) {    
        return "Hello Pets " + uuid;
    }
}

これらの最上位リソースには多くの子リソースがあるため、それらを整理する最善の方法を探しています。どんな助けでも大歓迎です。

4

2 に答える 2

1

Petsクラスのパスをから
@Path("/users")
に変更します
@Path("/users/{user_uuid}/pets")

于 2012-09-13T04:50:55.877 に答える
1

Jersey に子リソースへの呼び出しを委譲させたい場合は、ルート リソース メソッド@GETにHTTP アノテーションを追加しないでください。クラスUsersを考えてみましょう:User

public class User {

  String uuid;
  User(String id) { this.uuid = id; }

  @GET
  public String get() { return "Hello user " + uuid; }

  @GET
  @Path("/pets")
  public String getPets() { return "Hello pets " + uuid; }

}

Users次に、リソースを調整します。

@Path("/users")
public class Users  {

  @Path("/{user_uuid}")
  public User get(@PathParam("user_uuid") String uuid) {
    // Get the user from the DAO here...
    return new User(uuid);
  }

}
于 2012-09-12T22:14:40.323 に答える