#概要
どうもお疲れ様です。
RailsでAPIを作ることになったので、
とりあえずガチャっと作ってみました。
その後に RESTの制約 というものを友達に教えてもらいました。
シラナカッタ/(^o^)\ナンテコッタイ(゚д゚)情弱ジョウジャクゥ!
なんかAPIを作る時にRESTという制約に沿ってRESTfulなAPIを作るほうが
ある程度ルール化されているので、
今後の拡張方針に迷わず
「get post put delete」を使い分けできる。というもの?
らしいです。よくわからんな。
RESTfulなAPIじゃなきゃAPIじゃない!
というわけではないです。RESTfulなAPIが必ずしも
絶対的に良いAPIというわけではないんだ....(苦笑)
というわけで、絶対的に良いわけではないですが
RESTfulをひとまず勉強してみたいと思います。
なぜRESTfulを目指すのか。
この辺を読んどけばまるっと解決。
参考:RESTful Web サービスの基本 @IBMdeveloperWorks
今北産業ってかたは
httpのステータスコードを有効に活用する方が
シンプルに作れるルールがきちんと決まってるんだから、
それを利用しようじゃないか!
というような感じです。
補足するなら、
RESTfulにするために抑えておくポイント
基本的にはこういう風に設定する。ということっぽいですね。
HTTPメソッドとして、
何かデータを取得するAPIならGET
APIを通じてデータの更新をするときはPUT
[追記 : Yahagi様のコメントより]
Railsでは更新にはPATCHを扱うようです。勉強不足でした...!
データの追加はPOST
削除はDELETEのようにすることを心がけてAPIを作る事が
RESTfulにする方法です。
こうしてみるとすごく簡単ですね。
僕が作ったAPI(悪い例)
しかし、そんな簡単な事も知らないでAPIを初心者が作るとどうなるか。
凄いGET天国になります☆(というかGetとPostしか無い。)
...まぁ思いましたよ。
postとかputもあるのにgetだけで動かして果たして良いのかと。
でもGETにしとけば全部動くからいいかなって思って...(´;ω;`)(猛省)
というのも僕のような初心者が前提知識なしにAPI等に取り組むと下記のような症状が出ます。
- ステータスコード?なにそれ!
残念ながら僕は数カ月前までは知りませんでした...。
知らぬは一時の恥なのでバンバン晒していきますよー。
- HTTPメソッド?何が違うの?
ステータスコードを知らないので優位性が分からないのです('A`)
- getで適当にtrue,false返しておけば判断できるでしょう!
ステータスコードで可否が判断できないからそういうことをしてしまうのです('A`)
別にそれが絶対悪(例えば、複雑な判定結果をどうしても渡したい時とか)ってわけじゃないんですが
ただ単純に可否だけ見たいならステータスコードを返すだけで、無駄な通信を発生させずに
済むわけです。
RESTfulなAPIにする。
RESTfulなAPIにする。ということは
言い換えればAPI一つ一つにきちんとした役割を設定するということです。
所謂、「状態」で挙動が変化しないAPIを作るため必要です。(ステートレスなAPI)
明示的にhttpメソッドを使うことで
httpの本来持つステータス・コードを有効に活用することができるし、
利用法が明示的になるので、メソッドの種類でおおよその動きがわかります。
さらにコンテンツタイプもしっかり明示できたら、これほど明示的なAPIはないですね!
だから、皆RESTfulなAPIづくりを頑張るんですね。
稚魚エンジニアがまた一歩成長しました。
自分から見つける技術ってかなり幅が狭いです。
やはり人との繋がりは大事ですね!
ここまで調べると逆にRESTfulだとあまり良くない(不適切)例。というのが気になりますね。
ちょっと調べてみますか....このへんの話はまた機会を見て(僕も勉強が足りないので)
[追記 : miyabisun様より]
少しずつですが『Web を支える技術』を読んでいます @Programming log - Shindo200
このかたの解説が参考になるらしいです。僕もすぐ読んで勉強してきます(`・ω・´)
それはであであ。