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 サービスは、次の点を定義する必要があります.
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;
}
}