Restful Jersey

6766 ワード


REST にある 2000 年から Roy Fielding 博士論文で彼は HTTP きかく 1.0 および 1.1 版の首席著者の一人.
REST 最も重要な概念はリソース(resources)であり、世界を使用する. ID(通常使用 URI)標識.クライアント・アプリケーションの使用 HTTP 方法(GET/POST/PUT/DELETE)は、リソースまたはリソースセットを操作する.RESTful Web サービスは HTTP および REST 原理実現のWeb サービス.通常、RESTful Web サービスは、次の点を定義する必要があります.
  • Web サービスのベース/ルート URI、例えば http://host//resources.
  • サポート MIME タイプのレスポンスデータ( JSON/XML/ATOM などなど.
  • サービスがサポートするオペレーションのセット(例えば、 POST、GET、PUT または DELETE).

  •  
    Jerseyの4つの行動
    方法
    HTTPメソッドは、リソースのCRUD(作成、読み取り、更新、削除)操作にマッピングされます.いくつかの小さな修正をすることができますが、例えば  PUT  メソッドは作成または更新されますが、基本的なモードは次のとおりです.
    HTTP  GET:単一のリソースまたはリソースのセットを取得/リスト/取得します.
    HTTP  POST:新規リソース.
    HTTP  PUT:既存のリソースまたはリソースのセットを更新します.
    HTTP  DELETE:リソースまたはリソースのセットを削除します.
    メソッド/リソース
    リソースの集合;URI 次のようになります.http://host/api/resources
    メンバーリソース;URI 次のようになります.http://host/api/resources/123
    対応するアクション
    POST
    リソースセットのすべてのメンバーをリストします.
    取得ID: 1234 のリソースの表示形式.
    C(作成)
    GET
    1つのコレクションを使用して別のコレクションを更新(置換)します.
    タグの更新 1234 のデジタルリソースです.
    R(読み出し)
    PUT
    コレクションにデジタルリソースを作成し、そのID 自動配分です.
    下にサブリソースを作成します.
    U(更新)
    DELETE
    リソースセット全体を削除します.
    タグを削除 1234 のデジタルリソースです.
    D(削除)
     
    関連フレーム構造
    ·      コアサーバ:jersey-core.jar,jersey-server.jar,jsr 311-api.jar,asm.jar
    ·      コアクライアント:(テスト用)jersey-client.jar
    ·      JAXB サポート:(高度なサンプルで使用)jaxb-impl.jar,jaxb-api.jar,activation.jar,stax-api.jar,wstx-asl.jar
    ·      JSON サポート:(高度なサンプルで使用)jersey-json.jar
    ·      Springサポート:(高度なサンプルで使用)jersey-spirng.jar
    メタ注記情報の説明
    生存サイクルの説明
    1.       デフォルトでは注釈は使用されません.生存サイクルがrequestに等しいことを示し、リクエスト後に自動的に破棄され、デフォルトではスレッドが安全です.
    2.       アプリケーション、@Singleton注記を使用します.生存サイクルは、アプリケーション全体の生存サイクルに等しい.
    3.       セッション、@PerSession注記を使用します.生存サイクルは、restリソースインスタンスも同時に破棄されるsessionリクエストに等しく、sessionは破棄されます.
    Bean注記の説明
    1.@Pathパス情報は、マッピングされたアクセスパスを示す.例は以下のとおりです:@Path("/myResource")
    2. @Producesはpostメソッドとgetメソッドが返すパラメータタイプを制限するために使用され、json、string、xml、htmlをサポートする例は以下の通りです:@Produces(「アプリケーション/xml」,「アプリケーション/json」)
    3.@Consumes入力パラメータのタイプを制限するために使用されます.json、string、xml、htmlをサポートする例は以下の通りです:@Consumes("text/plain")
    4. @QueryParam
    リクエストが入力したパラメータにより、Stringをパラメータとするコンストラクション関数のあるクラスを変換できます.
    5.@DefaultValue@DefaultValue既定のパラメータを表します.例は以下のとおりです:@DefaultValue("2")@QueryParam("step")        int step,
    5. @PathParam @ MatrixParam,@HeaderParam,@CookieParam,@QueryParam FormParamは同じルールに従います. @ MatrixParamは、URLパスセグメントの情報を抽出します. @ HeaderParamが抽出したHTTPヘッダ情報. @ CookieParamが情報を抽出したCookieビスケット関連HTTPヘッダを発表.@FormParamは、前述の@Consumesで宣言されたタイプに一致するリクエストが抽出されるため、やや特殊です.例は次のとおりです.
      @POST
      @Consumes("application/x-www-form-urlencoded")
      public void post(@FormParam("name")   String name) {
    6.pojoレベルなどの関連注釈,@XmlRootElement,JPA注釈をサポートする.
    7.Spring関連注記、例えば@Autowired(required=true) 、@Qualifier("persionDao")、@Component
    @Scope("request")
     
     
    //  json JSONObject JSONArray   
    @XmlRootElement(name="rootclass")
    public class Bean {
    
    	private String username;
    	private String password;
    	
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	
    }

     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    	
    	<display-name>RESTfulWS</display-name> 
    	<servlet> 
    		<servlet-name>Jersey REST Service</servlet-name> 
    		<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    		<init-param> 
    			<param-name>com.sun.jersey.config.property.packages</param-name> 
    			<param-value>com.hiekn.poa.service</param-value> 
    		</init-param> 
    		<load-on-startup>1</load-on-startup> 
    	</servlet> 
    	<servlet-mapping> 
    		<servlet-name>Jersey REST Service</servlet-name> 
    		<url-pattern>/ws/*</url-pattern> 
    	</servlet-mapping> 
    	
      	<welcome-file-list>
        	<welcome-file>index.html</welcome-file>
      	</welcome-file-list>
    </web-app>

     
    @Path("rs")
    public class TestService {
    
    	@GET
    	@Path("/hello1/{name}")
    	@Produces("application/json;charset=UTF-8")
    	public String sayHello(@PathParam("name") String name) {
    		return "Hello, ".concat(name);
    	}
    
    	@GET
    	@Path("/hello2/{name}")
    	@Produces("application/json;charset=UTF-8")
    	public Bean sayHello2(@PathParam("name") String name) {
    		Bean b = new Bean();
    		b.setUsername(name);
    		b.setPassword("mlgb");
    		return b;
    	}
    	
    	@GET
    	@Path("/hello3/{name}")
    	@Produces("application/json;charset=UTF-8")
    	public List<Bean> sayHello3(@PathParam("name") String name) {
    		List<Bean> rsList = new ArrayList<Bean>();
    		Bean b = new Bean();
    		b.setUsername(name);
    		b.setPassword("mlgb");
    		rsList.add(b);
    		return rsList;
    	}
    	
    	@GET
    	@Path("/hello4")
    	@Produces("application/json;charset=UTF-8")
    	public List<Bean> sayHello4(@QueryParam("username") String username, @QueryParam("password") String password) {
    		List<Bean> rsList = new ArrayList<Bean>();
    		Bean b = new Bean();
    		b.setUsername(username);
    		b.setPassword(password);
    		rsList.add(b);
    		return rsList;
    	}
    	
    }