1

私はで次の投稿に出くわしました

JavaでURI内の複数のパラメーターを(RESTfully)処理する

そして私はちょうど興味があったのは次の有効なリソースですか?

@Path("Client/{client}/users")
public class UserPage 
{
@GET
@Produces(MediaType.TEXT_HTML)
public String userChoice(@PathParam(value = "client") final String client) 
{****Method here which handles a list of 'users'****}

@GET
@Path("{name}")
@Produces(MediaType.TEXT_HTML)
public String userPage(@PathParam(value = "client") final String client,  @PathParam(value = "name") final String name)
{****Method here which handles 'user' information****}}

私は特に{name}メソッドについてURIがuserpageメソッドと呼ぶものに興味がありますか?{}はここでどのように機能しますか?{}はパスクラスの名前を囲むことになっていると思いました。たとえば、クラスへのパスが「/ Client」の場合、{client}である必要があります。助言がありますか ?IDeas ??

4

1 に答える 1

1

定義したリソースは十分に有効ですが、実行しようとしていることの説明に基づいて、以下に示すようにソースを変更する必要があります。

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/Client/{client}/users")
public interface UserPage {
   @GET
   @Produces(MediaType.TEXT_HTML)
   public String userChoice(@PathParam(value = "client") final String client);

   @GET
   @Path("/{name}")
   @Produces(MediaType.TEXT_HTML)
   public String userPage(@PathParam(value = "client") final String client,
         @PathParam(value = "name") final String name);
}

ルートURIhttp ://www.example.com: 8080を想定すると、次のことが当てはまります。

  • http://www.example.com:8080/Clients/10/usersでGETを呼び出すuserChoiceと、リソース実装クラスのメソッドが呼び出されます。の値は10clientになります。
  • http://www.example.com:8080/Clients/10/users/BobでGETを呼び出すuserPageと、リソース実装クラス のメソッドが呼び出されます。の値はclient10なり、の値はBobnameになります。

中括弧構文は、パスパラメータ値を定義する正規表現を囲むために使用されます。また、クラスレベルのパスに先頭のスラッシュ('/')を含めたことに注意してください。これを省略すると、パスが一致しなくなります(ほとんどの場合)。

于 2012-04-11T23:17:25.523 に答える