0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Web API The Good Parts】を読んだメモ

Posted at

なにこれ

Web API The Good Parts
という本を読んだメモ

2章

URIの設計の原則

短く入力しやすいURI

  • 無駄な名前を含めるな(get_ とか service_とか

人間が呼んで理解できるURI

  • 省略語を使うな(addrとかsvとか

大文字小文字が存在してないURI

  • product id 1~100はこのAPI、101以降はこのAPIみたいなことをするな

改造しやすい(Hackable)なURI

サーバ側のアーキテクチャが反映されてないURI(.phpみたいな)

ルールが統一されたURI

覚えやすくどんな機能を持つURIなのかがひと目で分かる

エンドポイントには極力動詞をつけない。get post putでどの処理か分かるので

URLはハイフン繋ぎが良い。理由はgoogleのSEO的にハイフンだと別単語で認識する。アンダースコアは繋げるから(ただしjson apiは知らん、フロントの話っぽいから)

SSKDs

Small Set of Known Developers

LSUDs

Large Set of Known Developers

覚えやすく機能が一目でわかるエンドポイントに
適切なhttpメソッドを使え
英単語、単数形と複数形に注意

3章

キャメルかスネークか統一しろ!混ぜるな危険

user registration data timeは
registerdAtにできる。userリソースだからuserいらない

性別は文字列で表現が大多数

レスポンスはできるだけフラットに!
エラーの形式を統一、クライアントがエラー詳細を理解できるように

web apiチェックリスト

  • URIが短く入力しやすい
  • URIが人間が呼んで理解
  • URIが小文字のみ
  • URIが改造しやすいか
  • URIのルールは統一されてるか
  • 適切なHTTPメソッドを利用しているか
  • URIで利用する単語は、多くのAPIで同じ意味に利用されているものを選んでいるか
  • URIで使われている名詞は複数形か
  • URI中にスペースやエンコードを必要とする文字が入ってないか
  • ページネーションは適切に設計されてるか
  • データ形式の指定には、クエリパラメーターを使う方法をサポートしているか
  • response.bodyの内容はクライアントから指定できるか
  • データの構造は可能な限りフラットになってるか
  • response.bodyとして多くのAPIで同じ意味に利用されてる一般的な単語を選んでるか
  • response.dataはなるべく少ない単語数で表現してるか
  • 複数の単語を連結する場合、API全体を通して統一してあるか
  • response.bodyで変な省略形を使用していないか
  • response.body名は単数形 or 複数形と合ってるか
  • error時にはクライアントが原因を切り分けられる情報を含んでるか
  • 適切なステータスコードが返るか
  • メンテナンス時には503を返すようになってるか
  • APIのversionは管理されているか
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?