『REST API』について少し理解を深めました。

皆様こんにちは、Amiaです。

私はここ何日かで「REST API」について少しインプットしました。
そのため今回はアウトプットも兼ねて「REST API」について記事を書いていきたいと思います。

よろしければ最後までご覧になっていただければと思います。

⚫︎REST APIとは

  • REST(Representational State Transfer)の設計原則に従うAPIのこと。

⚫︎RESTfulとは

  • RESTで求められる原則に従っていること。

⚫︎CRUDに相当するメソッド

操作 意味 メソッド
Create 作成
(リソース名が未定の場合に使用する。)
POST
Create 作成
(リソース名が決まっている場合に使用する。)
PUT
Read 読み取り GET
Update 更新 PUT
Delete 削除 DELETE

⚫︎URI設計で考慮すること

  • 短く入力しやすいこと。
  • 人間が読んで理解できること。
  • 大文字小文字が混在していないこと。
  • 単語はハイフンでつなげる。
    →ハイフンで単語を連結するよりもURIを根本的に見直したほうが良い。
  • 単語は複数形を利用すること。
  • エンコードを必要とする文字を使わないこと。
  • サーバー側のアーキテクチャを反映しないこと。
  • 改造しやすいこと。
  • ルールが統一されていること。

⚫︎HTTPメソッドとURI

  • URIはリソースを示す。
  • HTTPメソッドはリソースに対する操作を示す。

今回は例としてmovieをリソースとしてCRUD操作のHTTPメソッド、URIを定義してみます。

操作 URI HTTP method
映画の一覧を取得 http://api.example.com/movies GET
映画の新規登録 http://api.example.com/movies POST
特定の映画の取得 http://api.example.com/movies/678 GET
特定の映画の更新 http://api.example.com/movies/678 PUT
特定の映画の削除 http://api.example.com/movies/678 DELETE

⚫︎リソースを特定するパラメータ

  • 絞り込みの方法には2種類ある。
種類 概要 使用用途
クエリパラメータ URLの末尾にある「?」に続くキーバリュー。
GET http://api.example.com/users?page=3
一意なリソースを表示したいときに利用する。
パスパラメータ URL中に埋め込まれるパラメータ。
GET http://api.example.com/users/123
特定のものに条件を加える場合に利用する。

⚫︎REST API設計レベル

設計レベルは4段階存在する。

⚪︎LEVEL0 : HTTPを使っている。

REST APIの基本レベル。RPCスタイルのXML通信。
* HTTPは単なる通信手段として利用。
* 1URLで全て完結。
* リクエストボディーに処理と引数が含まれる。

⚪︎LEVEL1 : リソースの概念を導入。

リソースごとにURLを分割。
* リソースごとにURLを分離。
* HTTPメソッドは活用できていないため、GETかPOSTのみで通信。

⚪︎LEVEL2 : HTTPの動詞を導入。

LEVEL1に加えてHTTPメソッドを活用。
* リソースに対してHTTPメソッドを使ったCRUD操作が行われている。

⚪︎LEVEL3 : HATEOASの概念の導入。

LEVEL2に加えてレスポンスにリソース間のつながりが含まれる。
* レスポンスに現在の状態に関連するハイパーリンクが含まれている。
(=HATEOASに相当する情報がレスポンスに含まれている。)

⚫︎最後に

今回はこの辺りで終わりたいと思います。
それではまた🖐️