星屑アトリエ

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

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

エンドポイントとホスト名の設計

よくある例

http://api.fugahoge.com/v1
http://api-public.ikatako.com/v2

ホスト名にプラス、v1やv2といった数値が入っていることが結構ある。
これは API自体のバージョンを表す もの。

あとは api という単語をホスト名に入れておくことで、DNSレベルで分けられて 自サーバ側で管理しやすいというのもあるっぽい。

api-public のように、オープン/パブリックなAPIであることを明示しておいて、 BtoCとBtoBで、エンドポイントを変えて可視性の段階を設けるのもありっぽい。
こっちはBtoC(第三者利用可能)用、あっちはBtoB(提携企業向け)用、って分けると分かり易いかも。

何がいいかは、その都度の状況と背景を考慮して最適化するのがよろしそう。

REST LEVEL3 APIとHATEOASの概念

HATEOASとは、を、結論から簡単に言えば、こんな感じなのかな。
最初に叩いたAPIから、次に起こせる行動のためのURIをリンクとして含める ようなAPIって感じかな。

最初にAPIを叩いたら、数珠式に叩くであろうAPIURIをあらかじめ仕込んでおくことで、API利用者側は具体的なURIや必要なパラメータを意識することなく、APIを簡単に利用することができる。

それがHATEOASという考え方であり、設計レベルでいえば0〜3まであるうちの、 最高の3らしい。

ちなみにLevel0から3までの区分はこんな感じ

REST LEVEL 達成基準
0 HTTPを使っている
1 リソースの概念を導入
2 HTTPの動詞(GET, POSTなどのメソッド)を導入
3 HATEOASの概念導入

で、上記のことを提唱したのが、「Roy Fieldingの論文」らしい。
自分の意識が最高を超えたら読もう。。

HATEOASは、 hypermedia as the engine of application state
の略。
アプリケーションが持つ状態のエンジンとしてのハイパーメディア??

HATEOASの概念を入れるメリット

  • クライアントがURIを知ることが、最初の導線以外知る必要ないので、 URIの変更がしやすくなるのと、 改造しやすい(Hackable) である必要がない
  • スマホアプリの開発では、最初の導線のみハードコーディングにすることで、 内部では動的にURIを利用できるから、仕様の変更に強いアプリにすることができる。 (いちいちアップデートする必要がない!!!!)
  • URIの間違いに起因するバグを減らせる(動的にURIを利用できるから

たしかに。

まぁただ、その分、サーバ側からJSONとかレスポンス返す時にそういう配慮が必要になってきそうで、ちょっとバックエンド側のコストが高くなりそうやな・・・

次回

-エンドポイント設計編- はこれにて終了!
クライアント側の設計方法を知ったので、今度はサーバ側の設計方法(レスポンスについて)勉強していきまーすっ!!