0
@Path("/hello")
    public class Hello {

     // This method is called if TEXT_PLAIN is request
      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String getfirstname() {
        return "Hello Maclean";
      }

     // This method is called if TEXT_PLAIN is request
      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String getlastname() {
        return "Hello Pinto";
      }
}

上記のコードに見られるように、テキスト応答を返す 2 つのメソッドがあります。私が試したら

localhost:8080/RestAPI/rest/hello

常に最初のメソッドが呼び出されます。私はいくつかのドキュメントを読んで、REST が URL ごとのリソースを一意であると見なしていることを知りました。これは有効ですか?. クエリ パラメータを 1 つのメソッドに送信し、メソッド内でクエリ パラメータに応じて異なる応答を送信することで、これを実行できることを知っています。それで、誰でもURL経由でこれを行うことができる方法を提案できますか. クエリ パラメータとすべてを追加する必要はありません。

前もって感謝します。

4

2 に答える 2

2

クラス@Pathの に加えて、メソッドに追加したい場合があります。@Path

@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("firstname")
public String getfirstname() { ...

@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("lastname")
public String getlastname() { ...

そして、それらは次のようにアクセスできます:

localhost:8080/RestAPI/rest/hello/firstname
localhost:8080/RestAPI/rest/hello/lastname
于 2013-11-01T08:22:07.437 に答える
1

まあ、これは本当です。REST は、URL および HTTP メソッドによってリクエストをディスパッチします。

ケースにクエリ パラメータを配置したくない場合は、@Pathon メソッドを使用できます。

@Path("/hello")
public class Hello {

 // This method is called if TEXT_PLAIN is request
  @GET
  @Path("/firstname")
  @Produces(MediaType.TEXT_PLAIN)
  public String getfirstname() {
    return "Hello Maclean";
  }

 // This method is called if TEXT_PLAIN is request
  @GET
  @Path("/lastname")
  @Produces(MediaType.TEXT_PLAIN)
  public String getlastname() {
    return "Hello Pinto";
  }
}
于 2013-11-01T08:22:53.997 に答える