読書会(JavaによるRESTfulシステム構築)第1回議事録
[ 戻る ]
Java読書会 (2011-05-14)
Oreilly本は初めて(!!)
■著者紹介/監訳者紹介/訳者紹介
・訳者の既刊本の分野がばらばらw
■カバーの説明
■監訳者あとがき
■まえがき
・まえがき中の本書の書名が間違っている。(末尾の「詳解」は不要)
・原書タイトルにある「JAX-RS」が和書からは無くなっている。
・「『REST』って何?」→本文中にあると思われる。
■はじめに
・「WS-*」→「だぶるえすすたー」と読む。
・「ブロゴスフィア」=「ブログ圏」
・CORBAのアーキテクトが転向したのは、すごい変化ということだろうか。
・CORBA自体は10数年前からある。
■目次
・サンプルコードが別のセクションに書いてある。本文→サンプルの順に読むのがよいのでは?
------------------------------------------------------------------------------
■第1部
■1章 RESTについて
・「HATEOAS」は何て読む?→「へいでぃおす」「へいてぃおす」
・URIのqueryString について
- 同じキーを複数繰り返してもOK。
- キーの順序はドキュメントでの出現順。(→HTMLの仕様書参照)
- 一般的なフレームワークは、同一キーの繰り返しには対応するが、順序を意識する(保証する)ものはないのではないか?
- 空白は「+」と「%20」の2通りがあるが、どう扱うべきか。「%20」の方が無難?
□1.2.2
・RESTの範囲の話? HTTPの範囲の話?→RESTの範囲という認識で良いのでは?
・「べき等」とはどこまで保証すべき? アクセスカウンタ、天気予報、検索結果等は「べき等」と言えるのか? 1バイトたりとも変えてはいけないのか、「オブジェクト」として同一であればよいのか?
・GETで生成/削除を行うと、検索エンジン等のクローリングでデータが破壊されたという実例がある。
□1.2.5
・相互接続性について
- CORBAやSOAPだと、アプリ同士以前のミドルウェアの部分で、つながる/つながらないを意識しなければならないことがある。
- RESTの場合、接続性についてはHTTPさえ話せればOKだが、アプリ同士が正しく情報のやりとりを行えるかはアプリまかせになっている。
・DELETEで存在しないURIに対するリクエストを行うのはOKか?
→OK。ただし、全く同じステータス/レスポンスを返す必要はない。
・RESTと非RESTではどう違うか?
- 非REST → 中央サーバのディレクトリサービスからサービスを取得するという考え方
- REST → サービスとそのデータが、サービスそのものを表している
⇒CORBAやSOAPでもRESTと同じことができるのではないのか? そんなに違うものなのか?
⇒結論出ず。
■2章 RESTfulサービスの設計
・UMLの多重度表現の表記がおかしくないか? (図が読みづらいが)
・URIは名詞を基準に設計されているが、修飾語はどうすべきか?
・URIは RPCのエントリポイントではないことを意識する必要がある。
・データを先に設計する必要がある。
・DBのテーブルそのものではないが、それに近いものになるのではないか。
・XML的には、「id」属性にオブジェクトの識別子を割り当てるのは不適切なのではないか?
・「id」はpublicで後から変更できないという点で、DBのサロゲートキーとは違う。(例えばRedmineでは、既にチケットが登録されている複数のサーバを1つに統合できない)
・例えば、データ件数や集計情報が欲しいときはどのようなURIにすべきか?
- 「orders/count」だと、RPC指向なのではないか?
- メタデータを提供する別のURIを用意すればよいのではないか?
・トランザクションはどのように扱うのか?
- WS-*では規格化に失敗?
□2.4.3 / 2.4.4
・PUTで生成する場合、生成と更新の区別が付かないのではないか?
⇒それで問題がないアプリが採用すればよいだけで、このサンプルではPOSTを採用している。
・「orders/purge」は「リソース」と言えるのか?
- RPCのエントリポイントではないのか?
- POSTメソッドならべき等ではないので、RESTのルールに従ってないとは言えない。
- 「名詞」に対する「操作」ならばOK?
- UNIXのデバイスファイルを連想した。(/proc等)
・結局最後はPOSTで何でもできる。
・「RESTfulなインターフェース」とは何か?
-「RESTful」:「ちゃんとしたREST」と「なんちゃってREST」を区別するための言葉。
- 極論すると「言ったもん勝ち」
■初めてのJAX-RSサービス
・createCustomer にはレスポンスボティが付かないように見える。
⇒実際には、実行して試してみないとわからない。(URIは渡しているので、内部的にGETしている可能性もある)
・p.34の例→「うわぁ」という実装。
⇒正しい方法は6章で説明している。この例は単なるサンプル。
------------------------------------------------------------------------------
■次回: p33「顧客の更新」から。
[ 戻る ]