RESTEAsyシリーズChapter 5@PathParam

3595 ワード


@PathParamは、URIパス断片変数をメソッド呼び出しにマッピングできるパラメータ注記です.
 
 
@Path("/library")
public class Library {

   @GET
   @Path("/book/{isbn}")
   public String getBook(@PathParam("isbn") String id) {
      // search my database and get a string representation and return it
   }
}

 
 
 
これにより、あなたのリソースにURI内に変数識別を埋め込むことができます.上記の例では、URIパラメータisbnを介してアクセスする必要がある本情報について、入力したパラメータのタイプは、基本タイプ、文字列、または文字列パラメータの構造方法を受信するJavaオブジェクト、または静的な文字列パラメータを受信するvalueOfメソッドであってもよい.例では、isbnが本物のオブジェクトであることを望んでいます.
 
   @GET
   @Path("/book/{isbn}")
   public String getBook(@PathParam("isbn") ISBN id) {...}


   public class ISBN {
      public ISBN(String str) {...}
   }

 
 
あるいは、共通のString構造方法の代わりにvalueOf方法を持っています.
 
 
  public class ISBN {
     
     public static ISBN valueOf(String isbn) {...}
  }

 
 

5.1.拡張@PathParamと正規表現


 
 
@PathParamsには、前の章では議論されていないより複雑な使用があります.
 
1つ以上のパスパラメータを1つのURI断片に埋め込むように指定できます.次の例を示します.
 
1. @Path("/aaa{param}bbb")
2. @Path("/{name}-{zip}")
3. @Path("/foo{name}-{zip}bar")

 
したがって、URI"/aaa 111 bbb"は#1に一致する.「/bill-02115」は#2に一致する.「foobill-02115 bar」は3に一致する.
 
@Pathのvalueに正規表現を使用する方法について説明しました.
 
@GET
@Path("/aaa{param:b+}/{many:.*}/stuff")
public String getIt(@PathParam("param") String bs, @PathParam("many") String many) {...}

  
次のリクエストでは、paramとmanyの値を見てみましょう.
 
Table 5.1. 
Request
param
many
GET/aaabb/some/stuff
bb
some
GET/aaab/a/lot/of/stuff
b
a/lot/of
 
 

5.2.@PathParamとPathSegment


 
URIパス呼び出し仕様については非常に単純で抽象的な断片検査があり、
javax.ws.rs.core.PathSegment:
 
 
 
public interface PathSegment {

    /**
     * Get the path segment.
     * <p>
     * @return the path segment
     */
    String getPath();
    /**
     * Get a map of the matrix parameters associated with the path segment
     * @return the map of matrix parameters
     */
    MultivaluedMap<String, String> getMatrixParameters();
    
}

 
 
 
 
resteasyに注入して
君の代わりにPathSegment
@PathParamのvalue:
 
 
 
 
 
 
   @GET
   @Path("/book/{id}")
   public String getBook(@PathParam("id") PathSegment id) {...}

 
 
 
 
 
 
これはとても役に立ちます.もしあなたがたくさんのものを持っていたら.
@PathParamは行列パラメータを使用します.行列パラメータはURI経路断片に埋め込まれた任意の一対のname‐value対集合であると考えられる.PathSegmentオブジェクトでは、これらのパラメータにアクセスできます.
MatrixParam.
 
 
行列パラメータの例:
 
 
 
 
GET http://host.com/library/book;name=EJB 3.0;author=Bill Burke
 
マトリクスパラメータの基本的な考え方は、その代表的なリソースがアドレス可能であり、それらの属性およびそれらの元のidから来ていることである.