JavaによるRESTfulシステム構築


JavaによるRESTfulシステム構築


オライリー・ジャパン


著者:Bill Burke
監訳:arton
訳者:菅野良二


第1部 RESTとJAX-RS標準
1章 RESTについて
1.1 RESTとHTTPの再生
1.2 RESTfulアーキテクチャの原則
1.2.1 アドレス可能性
1.2.2 制約された統一インターフェイス
1.2.3 統一インターフェイスがなぜ重要なのか
1.2.4 表現指向
1.2.5 ステートレスな通信
1.2.6 HATEOAS
1.3 まとめ

2章 RESTfulサービスの設計
2.1 オブジェクトモデル
2.2 URIのモデル化
2.3 データフォーマットの定義
2.3.1 読み取りと更新のフォーマット
2.3.2 作成のフォーマット
2.4 HTTPメソッドの割り当て
2.4.1 全オーダー、全顧客、全製品の参照
2.4.2 各オーダー別、各顧客別、各製品別のデータの取得
2.4.3 オーダー、顧客、製品の作成
2.4.4 オーダー、顧客、製品の更新
2.4.5 オーダー、顧客、製品の削除
2.4.6 オーダーのキャンセル
2.5 まとめ

3章 初めてのJAX-RSサービス
3.1 JAX-RS RESTfulサービスの開発
3.1.1 Customer: データクラス
3.1.2 CustomerResource: JAX-RSサービス
3.1.3 JAX-RSとJavaインターフェイス
3.1.4 継承
3.2 サービスのデプロイ
3.2.1 サーブレットコンテナへのデプロイメント
3.3 まとめ

4章 HTTPメソッドとURIマッチング
4.1 HTTPメソッドのバインド
4.1.1 HTTPメソッドの拡張
4.2 @Path
4.2.1 URIのバインド
4.2.2 @Path表現
4.2.3 マトリックスパラメータ
4.3 サブリソースロケータ
4.3.1 フルダイナミックディスパッチ
4.4 まとめ

5章 JAX-RSインジェクション
5.1 基本
5.2 @PathParam
5.2.1 複数のパスパラメータ
5.2.2 パスパラメータのスコープ(範囲)
5.2.3 PathSegmentとマトリックスパラメータ
5.2.4 プログラミングによるURI情報の取得
5.3 @MatrixParam
5.4 @QueryParam
5.4.1 プログラミングによるクエリパラメータ情報の取得
5.5 @FormParam
5.6 @HeaderParam
5.6.1 生のヘッダ
5.7 @CookieParam
5.8 共通の機能
5.8.1 自動的なJava型変換
5.8.2 @DefaultValue
5.8.3 @Encoded
5.9 まとめ

6章 JAX-RSコンテンツハンドラ
6.1 組み込みのコンテンツマーシャリング
6.1.1 javax.ws.rs.core.StreamingOutput
6.1.2 java.io.InputStream、java.io.Reader
6.1.3 java.io.File
6.1.4 byte[]
6.1.5 String、char[]
6.1.6 MultivaluedMapとフォーム入力
6.1.7 javax.xml.transform.Source
6.2 JAXB
6.2.1 JAXBについて
6.2.2 JAXB JAX-RSハンドラ
6.2.3 JAXBとJSON
6.2.4 JSONとJSONスキーマ
6.3 カスタムマーシャリング
6.3.1 MessageBodyWriter
6.3.2 MessageBodyReader
6.3.3 ライフサイクルと環境
6.4 まとめ

7章 レスポンスコード、複雑なレスポンス、そして例外処理
7.1 デフォルトのレスポンスコード
7.1.1 成功時のレスポンス
7.1.2 エラー時のレスポンス
7.2 複雑なレスポンス
7.2.1 Cookieを返す
7.2.2 Status列挙型
7.2.3 javax.ws.rs.core.GenericEntity
7.3 例外処理
7.3.1 javax.ws.rs.WebApplicationException
7.3.2 例外マッピング
7.4 まとめ

8章 HTTPコンテンツネゴシエーション
8.1 Connegについて
8.1.1 優先順位
8.2 言語のネゴシエーション
8.3 エンコードのネゴシエーション
8.4 JAX-RSとConneg
8.4.1 メソッドディスパッチ
8.4.2 ConnegとJAXBを利用する
8.4.3 複雑なネゴシエーション
8.4.4 URIパターンによるネゴシエーション
8.5 コンテンツネゴシエーションの活用
8.5.1 新しいメディアタイプを作成する
8.5.2 柔軟性のあるスキーマ
8.6 まとめ

9章 HATEOAS
9.1 HATEOASとWebサービス
9.1.1 Atomリンク
9.1.2 WebサービスでHATEOASを使用する利点
9.1.3 リンクヘッダとAtomリンク
9.2 HATEOASとJAX-RS
9.2.1 UriBuilderを使用したURIの構築
9.2.2 UriInfoを使用した相対URI
9.3 まとめ

10章 JAX-RSアプリケーションをスケールする
10.1 キャッシング
10.1.1 HTTPキャッシング
10.1.2 Expiresヘッダ
10.1.3 Cache-Control
10.1.4 再検証と条件付きGET
10.2 同時並行性
10.2.1 JAX-RSと条件付き更新
10.3 まとめ

11章 デプロイメントと統合
11.1 デプロイメント
11.1.1 Applicationクラス
11.1.2 JAX-RS非対応コンテナ内のデプロイメント
11.1.3 JAX-RS対応コンテナ内のデプロイメント
11.1.4 Java EE 6内のデプロイメント
11.2 設定
11.2.1 従来のJava EEコンテナ
11.2.2 Java EE 6コンテナ内のデプロイメント
11.3 EJBとの統合
11.4 Springとの統合
11.5 まとめ
12章 JAX-RSのセキュア化

12.1 認証
12.1.1 ベーシック認証
12.1.2 ダイジェスト認証
12.1.3 クライアント証明書による認証
12.2 認可
12.3 JAX-RSにおける認証と認可
12.3.1 暗号化の実施
12.3.2 認可に関するアノテーション
12.3.3 プログラミングによるセキュリティの強化
12.4 まとめ

13章 RESTful Javaクライアント
13.1 java.net.URL
13.1.1 キャッシング
13.1.2 認証
13.1.3 利点と欠点
13.2 Apache HttpClient
13.2.1 認証
13.2.2 利点と欠点
13.3 RESTEasyクライアントフレームワーク
13.3.1 認証
13.3.2 利点と欠点
13.4 RESTEasyクライアントプロキシ
13.4.1 利点と欠点
13.5 まとめ

14章 JAX-RS実装
14.1 Jersey
14.1.1 組み込み可能なJersey
14.1.2 クライアントAPI
14.1.3 WADL
14.1.4 データフォーマット
14.1.5 MVC(モデル、ビュー、コントローラ)
14.1.6 コンポーネント統合
14.2 Apache CXF
14.2.1 リクエストパラメータをbeanに集約する
14.2.2 特定の型へのリクエストパラメータ変換
14.2.3 サブリソースの静的な解決
14.2.4 クライアントAPI
14.2.5 JAX-RSアノテーションなしでのサービスのサポート
14.2.6 リクエストとレスポンスの横取り
14.2.7 ファーストクラス市民としてのXSLTとXPathの使用を奨励
14.2.8 保留呼び出しのサポート
14.2.9 マルチパートフォーマットのサポート
14.2.10 分散OSGi RIとの統合
14.2.11 WADLのサポート
14.2.12 コンポーネント統合
14.3 JBoss RESTEasy
14.3.1 組み込みコンテナ
14.3.2 非同期HTTP
14.3.3 インターセプターフレームワーク
14.3.4 クライアント「ブラウザ」キャッシュ
14.3.5 サーバーサイドキャッシング
14.3.6 GZIP圧縮
14.3.7 データフォーマット
14.3.8 コンポーネント統合
14.4 まとめ

第2部 JAX-RSワークブック
15章 ワークブックについて
15.1 RESTEasyとサンプルコードのインストール
15.2 サンプルコードの実行に必要な要件と構造
15.2.1 サンプルコードのディレクトリ構造
15.2.2 環境の設定

16章 3章のサンプルコード
16.1 サンプルプログラムのビルドと実行
16.1.1 pom.xmlの解説
16.1.2 ビルドの実行
16.2 ソースコードをチェックする

17章 4章のサンプルコード
17.1 サンプルex04_1: HTTPメソッド拡張
17.1.1 サンプルプログラムのビルドと実行
17.1.2 サーバーコード
17.1.3 クライアントコード
17.2 サンプルex04_2:正規表現を用いた@Path
17.2.1 サンプルプログラムのビルドと実行
17.2.2 サーバーコード
17.2.3 クライアントコード
17.3 サンプルex04_3:サブリソースロケータ
17.3.1 サンプルプログラムのビルドと実行
17.3.2 サーバーコード
17.3.3vクライアントコード

18章 5章のサンプルコード
18.1 サンプルex05_1:URI情報のインジェクション
18.1.1 サーバーコード
18.1.2 クライアントコード
18.1.3 サンプルプログラムのビルドと実行
18.2 サンプルex05_2:フォームとCookie
18.2.1 サーバーコード
18.2.2 サーバー設定
18.2.3 サンプルプログラムのビルドと実行

19章 6章のサンプルコード
19.1 サンプルex06_1:JAXBの使用
19.1.1 クライアントコード
19.1.2 pom.xmlへの変更
19.1.3 サンプルプログラムのビルドと実行
19.2 サンプルex06_2:コンテンツハンドラの作成
19.2.1 コンテンツハンドラコード
19.2.2 リソースクラス
19.2.3 アプリケーションクラス
19.2.4 クライアントコード
19.2.5 サンプルプログラムのビルドと実行

20章 7章のサンプルコード
20.1 サンプルex07_1:ExceptionMapper
20.1.1 クライアントコード
20.1.2 サンプルプログラムのビルドと実行

21章 8章のサンプルコード
21.1 サンプルex08_1:JAX-RSを使用したconneg
21.1.1 クライアントコード
21.1.2 サンプルプログラムのビルドと実行
21.2 サンプルex08_2:URLパターンを使用したConneg
21.2.1 サーバーコード
21.2.2 サンプルプログラムのビルドと実行

22章 9章のサンプルコード
22.1 サンプルex09_1:Atomリンク
22.1.1 サーバーコード
22.1.2 クライアントコード
22.1.3 サンプルプログラムのビルドと実行
22.2 サンプルex09_2:リンクヘッダ
22.2.1 サーバーコード
22.2.2 クライアントコード
22.2.3 サンプルプログラムのビルドと実行

23章 10章のサンプルコード
23.1 サンプルex10_1:キャッシングと同時並行の更新
23.1.1 サーバーコード
23.1.2 クライアントコード
23.1.3 サンプルプログラムのビルドと実行

24章 11章のサンプルコード
24.1 サンプルex11_1:EJBとJAX-RS
24.1.1 プロジェクト構造
24.1.2 EJBプロジェクト
24.1.3 WARプロジェクト
24.1.4 EARプロジェクト
24.1.5 サンプルプログラムのビルドと実行
24.2 サンプルex11_2:SpringとJAX-RS
24.2.1 サンプルプログラムのビルドと実行

書籍目次

Posted by shi-n