REST APIとHTTPメソッドについてまとめてみた


REST APIは理解しないで使っていそうなので調べてみようと思います。

参考:IT用語辞典 e-Words

・RESTful API(REST API)とは、Webシステムを外部から利用するためのプログラムの呼び出し規約(API)の種類の一つで、RESTと呼ばれる設計原則に従って策定されたもの。RESTそのものは適用範囲の広い抽象的なモデルだが、一般的にはRESTの考え方をWeb APIに適用したものをRESTful APIと呼んでいる。
・RESTful APIでは、URL/URIですべてのリソースを一意に識別し、セッション管理や状態管理などを行わない(ステートレス)。同じURLに対する呼び出しには常に同じ結果が返されることが期待される。
・また、リソースの操作はHTTPメソッドによって指定(取得ならGETメソッド、書き込みならPOSTメソッド)され、結果はXMLやHTML、JSONなどで返される。また、処理結果はHTTPステータスコードで通知するという原則が含まれることもある。

らしい、、、、
難しいのでゆっくり噛み砕いていく。

RESTってなに?

Representational State Transfer => REST
って呼ぶらしい。
これってなんなのかというと、

分散型システムにおける複数のソフトウェアを連携させるのに適した設計原則の集合、考え方のこと。

だそうです。

APIってどういうもの?

個々のソフトウェアの開発者が毎回すべての機能をゼロから開発するのは困難で無駄なため、多くのソフトウェアが共通して利用する機能は、OSやミドルウェアなどの形でまとめて提供されている。
そのような汎用的な機能を呼び出して利用するための手続きを定めたもの

共通して利用する機能は呼び出すだけで使えるようにしておけば開発者は楽だよねってものらしい。

つまり、
複数のソフトウェアを連携させる上で共通して利用する機能は、まとめて用意しとけば開発者はらくだよねってことか。

ステートレスってなに?

システムが現在の状態を表すデータなどを保持せず、入力の内容によってのみ出力が決定される方式。同じ入力に対する出力は常に同じになる。

作成・取得・更新・削除の処理があったとして、
各処理ごとURLを変えるんじゃなくてHTTPメソッドで分けて1つのURLでやったほうががいいよねってことかな。

利用者の負荷が減るのかとおもいます。

HTTPメソッドってどんなものがあるの?

HTTPメソッドの種類は以下のようなものがある。

メソッド 意味
GET URIで指定した情報を要求。URIがファイル名のときはそのファイルの中身を、プログラム名のときはそのプログラムの出力を返す
POST  クライアントからデータを(名前と値)のセットで渡す。フォームデータを送るときなどに使用
PUT URIで指定したサーバ上のファイルを置き換える
DELETE URIで指定したサーバ上のファイルを削除する
HEAD GETと同じだがHTTPヘッダのみを返す
OPTIONS リソースがサポートしているメソッドの取得
TRACE サーバが受け取った要求行とヘッダ行をそのまま送り返す
CONNECT プロキシ動作のトンネル接続への変更

REST APIで使われるのはGET、POST、PUT、DELETEなんですって。
作成・取得・更新・削除するシステムがあったとして
各処理をHTTPメソッドを使用し、取得なら「GET」、作成なら「POST」、更新なら「PUT」、削除なら「DELETE」のようにHTTPの一般的なリクエストメソッドを使用するそうです。

参考サイト

RESTful APIにおける基本的な考え方
https://developer.ntt.com/ja/blog/92ae9651-557e-482c-8f53-59cbce049c02

0からREST APIについて調べてみた
https://qiita.com/masato44gm/items/dffb8281536ad321fb08

REST APIとは? – API設計のポイント!
https://wp.tech-style.info/archives/683#toc12

RESTful APIとは何なのか
https://qiita.com/NagaokaKenichi/items/0647c30ef596cedf4bf2

APIとは
http://e-words.jp/w/API.html

HTTPメソッド(CRUD)についてまとめた
https://qiita.com/r_fukuma/items/a9e8d18467fe3e04068e