@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Book: Web API: The Good Parts

内容はよくまとまっていた。確かにそこは悩むよね、という点がいくつもカバーされていて、かつ既存の API をリサーチしたまとめを元にベターな選択肢が述べられていて納得感がある。 API の設計や実装に慣れている人でも、迷ったときのリファレンスとして利用できると思う。薄い本なので全体的に言及が浅い印象があるけど、随所でより深い議論へのポインタがあるのもよい(海外ブログの URL とか)

セキュリティの話題を扱う第6章だけ異彩を放っている感じがした。一読する価値はあるけど、バージョニングの話とかレスポンスデータ構造の話とかと比べるとだいぶ毛色が違っていて、この章の一部だけ妙に収まりが悪く感じた。

校正が杜撰だった。あまりにひどくて読みながら誤変換とかミスっぽい部分をメモしたら21箇所もあった。それ以外にも日本語の文章としてなんか変、みたいなのもあった。今まで読んだ本のなかで最低レベルのミスの多さだったと思う。オライリージャパンに指摘のメールを送ったけど、そんなことをするのもこれが初めてだった。


以下読みながらとった、「ここは大事」と感じたメモ。

  • X-HTTP-Method-Override
  • /users/:id/friends/:id で関係テーブルのIDを指定させるべきではない(内部アーキテクチャを意識させない)
  • OAuth 2.0 Grant Type 勉強になった
  • script 要素は 40x 50x だと処理が止まるのでクライアントで検知できない(要実験)
  • id_str 大きな数 JS で問題になるので文字列でも返す
  • ぴったりくるステータスコードが存在しなかった場合には、200 400 500 といった 00 で終わるステータスコードを付けるようにします。 p95 根拠は? 404 が汎用では?
  • モンゴメリースコットが自分を有能に見せる作戦
  • 400 ってリクエストが不正(構文ミスとか)の場合かなって思ってたけどちがうの?
  • HTTP キャッシュ 期限切れモデルと検証モデル
  • rfc1123
  • etag をデータ全体からではなく最終更新日時からハッシュをとる、という手もあるのか
  • 弱い検証 W/"" 広告の例
  • Vary の例わかりやすい
  • Cache-Control stale-while-revalidate 非同期でオリジンにキャッシュ検証
  • api のテストは content-type もチェックすべき
  • プリフライトリクエストは送らない場合もあり得る
  • プリフライト情報をキャッシュできる
  • セマンティックバージョニングも mojombo なのか
  • Blackout test api を一時的に停止してアクセス不能にしてみるテストのこと
  • マイナスのパラメータもチェックしないと本来減るべきポイント数が増えてしまう

あと、「複数バージョンの API を公開していく場合、古いバージョンの API の公開終了をどのようなタイミングで行うとよいか」という説明の図がわかりやすかった。

f:id:a666666:20141214024256j:plain

Web API: The Good Parts

Web API: The Good Parts