WebService@QueryParam@DefaultValue@PathParamの違い

5623 ワード

1まず@queryparamを見て例を見ます:Javaコード
Path("/users") 

public class UserService { 

  

    @GET 

    @Path("/query") 

    public Response getUsers( 

        @QueryParam("from") int from, 

        @QueryParam("to") int to, 

        @QueryParam("orderBy") List<String> orderBy) { 

  

        return Response 

           .status(200) 

           .entity("getUsers is called, from : " + from + ", to : " + to 

            + ", orderBy" + orderBy.toString()).build(); 

  

    } 

  

}

 
URL入力:users/query?from=100&to=200&orderByy=age&orderByy=nameとして出力される場合、getUsers is called,from:100,to:200,orderBy[age,name]注意すべきは、@pathparamとは異なり、@queryparamでは、URLのパラメータがキー値ペアとして指定されているのに対し、プログラムでは@QueryParam("from")int fromではURLのfromの値が読み出され、@pathparemではURLにパラメータの値のみが表示され、キー値ペアが表示されず、キー値ペアが表示されず、プログラムでは@QueryParam("from")int fromではURLのfromの値が読み出され、@pathparemではURLには例えば「/users/2011/06/30」
則:Javaコード
@GET 

    @Path("{year}/{month}/{day}") 

    public Response getUserHistory( 

            @PathParam("year") int year, 

            @PathParam("month") int month,  

            @PathParam("day") int day) { 

  

       String date = year + "/" + month + "/" + day; 

  

       return Response.status(200) 

        .entity("getUserHistory is called, year/month/day : " + date) 

        .build(); 

  

    } 

 
出力:getUserHistory is called,year/month/day:2011/6/30
2動的に取得:Javaコード
@Path("/users") 

public class UserService { 

  

    @GET 

    @Path("/query") 

    public Response getUsers(@Context UriInfo info) { 

  

        String from = info.getQueryParameters().getFirst("from"); 

        String to = info.getQueryParameters().getFirst("to"); 

        List<String> orderBy = info.getQueryParameters().get("orderBy"); 

  

        return Response 

           .status(200) 

           .entity("getUsers is called, from : " + from + ", to : " + to 

            + ", orderBy" + orderBy.toString()).build(); 

  

    }

 
  
URL;users/query?from=100&to=200&orderBy=age&orderBy=name出力:getUsers is called,from:100,to:200,orderBy[age,name]注意ここでorderby後の2つのパラメータをLIST処理として読み込む.
3@DefaultValue、デフォルト
例:Javaコード
@Path("/users") 

public class UserService { 

  

    @GET 

    @Path("/query") 

    public Response getUsers( 

        @DefaultValue("1000") @QueryParam("from") int from, 

        @DefaultValue("999")@QueryParam("to") int to, 

        @DefaultValue("name") @QueryParam("orderBy") List<String> orderBy) { 

  

        return Response 

           .status(200) 

           .entity("getUsers is called, from : " + from + ", to : " + to 

            + ", orderBy" + orderBy.toString()).build(); 

  

    }

 
URL:users/query出力:getUsers is called,from:1000,to:999,orderBy[name]
わかりやすいでしょう