💀
API設計をしたときにしくじったこと
date: "2016-03-16 15:00:00 +0900"
API 設計をしたときにしくじったこと
今、関わっている Web アプリケーションの API を設計する際に
しくじったことを列挙していくポエムです。
しくじり1 応答メッセージの基本形を決めずに作っちゃった
API を使うクライアントも自分で作る状態だったので、とりあえず
行き当たりばったりで進めていった結果、共通のお作法が存在しない状態に
なってしまった。
しくじり2 HTTP 応答コードだけでエラーを表そうとしてしまった
大抵は、応答コードだけでなんとかなります。ただし、更新時のバリデーション
エラーなど、何がどうエラーだったのかを返そうとすると、応答コードだけでは
全然足りません。そして、エラーの返し方を共通化しておかないと、API によって
エラー発生時の応答が変わってしまい、クライアントを作る人が悲惨です。
しくじり3 業務よりの API と素の DB 操作に近い API が混在しちゃった
これはしくじりなのかまだ決めかねているけれども、なんか微妙なのでしくじりに
しておきます。例えば、テーブル A とそれに紐付く B があったとして、素テーブル
操作っぽい API だと、A を全件取ってくる →A をループして紐付いた B を取得する。
というような処理は割とよくあると思うのですが、これを API として提供した。
性能問題が出るより JOIN して渡した方が良いだろうと。その結果、API の数が
増えてしまい、どれ使ったら良いんだろう?と悩む状態になることがしばしば発生。
API のシンプルさと実務的な側面をどうバランスさせるのかは非常に悩ましい。
美しさだけなら、シンプルな API だけ用意してあとはがんばれ!で良いのですが…
Discussion