logo サブスレッド

REST (API)が理解できないのでまとめてみる

はじめに

金曜担当のしみずです。どうぞよろしく。
今日は担当者取材のためお休みとしようと思ったんですけど、特に取材なんてなかったので休まず書くことにしました。

興味があって Qiita API を使って何かしようと思って調べてたところ、Qiita API は REST API ということでした。
REST とか REST API ってよく聞くのですが説明サイト見てもイマイチ理解するまでに至っていなかったので
まとめたら理解できるんじゃないかと思いまとめてみることにしました。

REST APIとは

「REST API とは REST と呼ばれる設計原則に従って策定されたもの。」
と、IT用語辞典に書いてありました。RESTful API とも呼ぶそうです。
わからんことをわからんことで説明された気分です。

REST とは

なにがわからんかって言うと REST です。
これを調べてみました。

  • Webの設計思想のこと
  • 「リソース」を扱うための考え方
  • パラメータを指定して特定のURLにアクセスするとXML(またはJSON)で応答される
  • セッションなどの状態管理は行わない
  • 同じURLからは同じ結果が得られる(状態やセッションに依存しない)

リソースとはブログの記事だったり写真だったりというひと固まりの情報のことです。

もう一回、REST API とは

ということで REST API です。
最初、新しいプロトコルかな?と思ったのですが違うようです。
普段、Web の API は http(s) を使ってると思いますが、そこは変わらないです。
APIの設計思想をRESTに従って行うのが REST API ということです。

リソースを扱うので、そのリソースを取得したり新規作成したり更新したり削除したりする必要があります。
例えばユーザ情報を扱う場合

http://hoge.com/api/user1/getuserinfo → 取得
http://hoge.com/api/user1/newuserinfo → 新規作成
http://hoge.com/api/user1/updateuser → 更新
http://hoge.com/api/user1/deleteuser → 削除

といったAPIが考えられます。
ただ、RESTの考え方だとこれはよろしくなくて、URLはあくまで何のリソースかという情報のみを入れます。
例であれば、getやnew、update、deleteといった動詞はURLには含めないというのが正解です。

http://hoge.com/api/user1/userinfo

このようにユーザ情報を扱うためのURLを一つ用意します。
これでは取得するのか更新するのか削除するのか分かりません。
ここでhttpのリクエストメソッドを使います。
GETやPOSTのあれです。

リクエストメソッドは4つあります。

  • GET → 取得
  • POST → 新規作成
  • PUT → 更新
  • DELETE → 削除

という感じです。

さっきのユーザ情報を扱うAPIに対してこの4つのリクエストメソッドを用いることで
1つのURLで済むという感じですね。

おわりに

まとめることで、色々調べるのである程度理解が進んだような気がします。
設計思想だというところが分かっただけでも大きいです。

週間、ウチのネコ。第3号

爆睡

現在の位置:サブスレッド ホーム > 技術ブログ > REST (API)が理解できないのでまとめてみる