ITエンジニアぽん太のブログ

和製SEのぽん太が、IT技術や話題について触れていきます。デスマーチで育ち正しい知識がないので勉強用ブログです。

HTTPメソッドの基礎を覚えよう

こんにちわ。ぽん太です。

HTTPメソッドについて、今まではGETとPOST位を使いまわして、 どうにかやっていたのですが、最近は時代遅れというかAPIのURLを作るにも、 RESTの設計思想に従って作っていくのが流行りだと思います。

うーん、この辺に関してはGETとPOSTでいいじゃんと、今でも思っている節があるのですが、 知らないで脱線するのと知っていて脱線するのとでは雲泥の差。

何も知らない中年エンジニアになりたくないので、ここにまとめて行くよ!

今現在35歳なんですが、まだまだ技術系の話題に付き合っていきたい。 というかこのITエンジニアなのに、技術系がわからないなら潔く引退したいと思っています。

なのでこの年齢からが頑張りどころ。時間があるときにどんどん新しいことを覚えていきましょう。

HTTPメソッドの種類について

GET : データを参照したいときに使う。CRUDのR。冪等性が求められる。 HEAD : HTTPヘッダーのみを返却する。チェック用。 POST : データを新規登録したいときに使う。CRUDのC。冪等性は求められない。 OPTIONS : HTTPサーバーがどのHTTPメソッドを許容しているか調べる。攻撃の可能性があるので、閉じることができる。 PUT : データを更新したいときに使う。CRUDのCとU。冪等性は求められない。 DELETE : データを削除したいときに使う。BODYは使わない。冪等性は求められる。 TRACE : サーバーが受けとったリクエストをそのまま応答する。セキュリティの観点から閉じられることが多い。 PATCH : 新しいメソッドですね。HTTP1.2からの対応で一部更新用です。

この中で主に使われるのはこれらの、メソッドで冪等性と副作用は下記の表のようになります。 f:id:ponta-it:20190517122046p:plain

OPTIONSはSPAを作ると、異なるドメインに対してブラウザがpreflight-requestを投げ込んで、アクセス可能かをチェックする機能があります。

Google APIの仕様を見てみる。


Gmailのラベル操作API

POST / userId /labels ラベルを作成する。

DELETE / userId /labels/ id ラベルを即座に削除する。

GET / userId/labels/ id 特定のラベルを取得する。

GET / userId /labels ユーザーのすべてのラベルを取得する。

PATCH / userId /labels/ id 特定のラベルを更新する。

PUT / userId /labels/ id ユーザーの特定のラベルを更新する。


くっ、わかりやすいじゃないかGoogleAPI。 これをGETとPOSTだけで作ると、結構わかりずらくなりそう。 業務系システムでサーバーサイドレンダリングのシステムであれば基本GETとPOST以外は意識しないで済みますが、 APIの集合体を作ってSPAやネイティブアプリに提供するとなるとこのほうが良さそうに見えてしまいました。

どんどん知識は更新されているし、過去の失敗を生かして新しい知識がどんどん出てくるので、 ベストプラクティスを採用しないこともあえての選択肢としてはあると思うし全然否定しませんが、 やっぱり覚えておいて逸脱するのと、知らないのとではわけが違いますね。

だいたい、困った時はGoogleAPIを参考にしていこうと思います。

今日は以上です!