WebAPI-RESTful-を作るうえで考えておく設計思想とか
最近、忙しくて疎かになっていました。
業務でAPIを作ることになったのでその話が出来ればなと思っています。
RESTfulAPIとは何か?
いろんなところにいろんな情報がありますが、個人的にはこんな受け止め方しています。
1.「マスター、いつものくれよ」はナシ
よく、「マスター、いつもの」と言って注文をするようなドラマがあったりします。
※私の知り合いにもそんな人がリアルにいます笑
これって、マスターが「この人は誰で、この人がいつも頼むものはxxxだ」という情報を持っているから成り立つんですよね。
HTTPっていうのは状態(ステート)を持たない(レス)ので、Webアプリケーション作るときはセッションを使ってログイン状態を管理したり、ユーザーの入力情報を保持しておいて、必要な時にそこから値をとってきてDBに登録したり、画面に表示したりする。。。
たとえば、サーバー(マスター)が変わったときに「マスター、いつもの」っていっても「お前誰だよ」ってなるのを防ぐために、
RESTfulっていうのは、リクエストするときには必要な情報をURIやリクエストボディに付与してあげればいいよね。ということを考えています。
※「マスター、おれはxxxxで、xxxxが欲しい」っていうのをやっておけば、マスター(サーバー)が変わっても問題ない。(この例であれば自分のこと教える必要もないですが)
2.HTTPメソッドで動詞を表現する
リクエストURIが必要な情報を指し示すとすれば、HTTPメソッドはその必要な情報をどうしたいのかを表現するもの。
- GET 欲しい、くれよ
- POST 登録してくれよ
- PUT 更新してくれよ
- DELETE 削除してくれよ
英語っぽい考え方をすればいいと思います。
主語 + 動詞(HTTPメソッド)+ 目的語(URL)
目的語の中に動詞が入らないように設計するのがポイントだと思っています。
3.レスポンスコードは適切に
リクエストがあれば、レスポンスがある、これHTTP。
レスポンスコードというのがあるので、適切なものを返してあげなきゃだめ。
すごいまとまっているので以下を参考にすればよいと思う。
www.agilegroup.co.jp
その他何かあれば追記していきます。