ミニ版はこちらから無料で読むことができます。 www.oreilly.co.jp
GETメソッドのリクエストボディはいつ使用するのか?
以前APIを作っているときに思った「HTTPのGETメソッドは基本的にURLにクエリストリングを含めて使用するけどリクエストボディはどういうときに使用するのか?」かという疑問が解消された。
...if the request method does not include defined semantics for an entity-body, then the message-body SHOULD be ignored when handling the request. https://www.rfc-editor.org/rfc/rfc2616#section-4.3 https://stackoverflow.com/questions/978061/http-get-with-request-body
GETでリクエストボディを送ることは可能だが推奨されていない。そのためクエリストリングを使用する。
ただしIEではURLの最大長は2083文字の制限があるためその制限を超えるようなときはリクエストボディを使用するしかない。
URL の最大長は、2,083 文字Internet ExplorerElasticSearchのSearchAPIはGETでリクエストボディも使用することができる。
※クエリストリングも使用できる。リクエストボディを仕様するのは視認性が良いことが理由のよう。リクエストボディ方式では、表現がより豊かになり、読みやすいJSON形式で検索を定義することもできます。
Search API | Elasticsearchリファレンス [5.4] | Elastic
ModuleとCGIの違い
あとはPHPのModuleとFastCGIの違いやnginxとphp-fpmでUnixソケット通信でリクエストをプログラムに渡してるとかをなんとなく理解した。
感想
しかしフレームワークのAPIレベルの知識をボトムアップで学んだだけでは、その背後にある、ウェブサービスに共通する考えは身につきにくいー間違った類推をしてしまったり、具体的な実装に理解が引きずられてしまうーことが考えられます。 渋川よしき著『Real World HTTP ミニ版』(オライリー・ジャパン発行、ISBN978-4-87311-878-9、p133)
と書かれているように、すぐに陳腐化してしまうフレームワークやツールの使い方ではなく、今までなんとなくの理解で済ませていた根本的にどのように動いているのか仕組みを学ぶ必要があると感じる。流行りの技術やフレームワークに振り回されないようにするためにも。