星屑アトリエ

並行世界のエンジニア界にいる端くれ一般ぴーぽー。いろいろ備忘録。

WebAPI トレーニング 01 -エンドポイント設計編-

Androidのフロントしかやってなかった人間がWebAPIについて勉強していることをまとめてみます
あと自分の超短い経験上の解釈も入ってるので、あまり参考にならないかも
間違ってたらガツンと優しいレビューをお願いします!!

WebAPIとは

  • ITとしてのエコシステムを確立する為に、Webの仕組みを通して、対外へサービスを提供する
  • WebAPIの実例として、Twitter, Facebook, Amazonなどが挙げられる。
  • 共通のデータ操作ロジックを持つことができるので、チーム間で連携とりやすい(社内

WebAPIと美しい設計

  • 使いやすい
    使い手のことを常に考える。 エンドポイントの設計とか、RESTなAPI設計を目指す

  • 変更しやすい
    一度作ったものを改修したり、技術的負債を取り除いたりする為にも、 変更しやすい柔軟な作りにするのが良い。

  • 頑強
    データの通信にはセキュリティのリスクがつきものなので、リスクヘッジしっかり取れる設計にする

  • 外部に公開して恥ずかしくない(企業価値を高めるファクター)
    エンドポイントに関係するが、名付け方やAPIの使い方が変に複雑だったり、使いにくいのは色々技術力怪しまれるので、シンプルで冪等性ある使いやすいものにしようねっていう。

URIの設計

考え方は、「リソースを表現している」 かどうか

  • 短くて入力しやすい
  • 人間がぱっと見て理解できる
  • 大文字小文字が存在していない(フォーマット)
  • 使う側が使いやすい
  • サーバ側が使用するアーキテクチャを表現しない
  • 命名ルールが統一されている

これらを踏まえた上で、アクセス先が「リソース」であることを簡単に想像しやすいURIを考えるのが良い。

リーダブルコードに通づるところ がかなりある気がする!!

HTTPメソッド

HTTPメソッドってどんなのがあるのか

  • GET 情報の取得 を表すメソッド
    GETはあくまでデータの取得・参照であって、データを操作するものじゃない

  • POST
    基本的には新規のデータを送信、投稿、登録する、といった時に使う。 更新などはPUT, PATCHのメソッドがあるから
    とはいえ、HTML4時代はformで扱えたメソッドがGET/POSTのみだったので、
    その名残でPOSTでデータの変更とかすることもあるが・・・
    APIを叩くときはformを使うばかりじゃないので、PUTやDELETEを積極的に取り入れていくのが良い。

  • PUT
    指定したデータそのものの変更、更新に使う

  • PATCH データの一部変更に使う。

  • DELETE
    データの削除に使う。

GET/POSTしか使えないあなたの為に

X-HTTP-Method-Override ヘッダの活用
X-HTTP-Method-Overrideヘッダは、リクエスト先に対して、本来使いたいメソッドの定義を書いておくもの。
GET/POSTしか使えなくて、でもPUT、DELETEメソッドを使いたいなってなったときはそっと書いておくと、リクエスト先がそのヘッダを解釈して指定されたメソッドを実行するようになる。

次回

エンドポイントの設計について考察、留意点をかいてみます。

参考資料

こちらを使って勉強させてもらってます。ありがとうございます
Web API: The Good Parts