皆様こんにちは、Amiaです。
私はここ何日かで「REST API」について少しインプットしました。
そのため今回はアウトプットも兼ねて「REST API」について記事を書いていきたいと思います。
よろしければ最後までご覧になっていただければと思います。
- ⚫︎REST APIとは
- ⚫︎RESTfulとは
- ⚫︎CRUDに相当するメソッド
- ⚫︎URI設計で考慮すること
- ⚫︎HTTPメソッドとURI
- ⚫︎リソースを特定するパラメータ
- ⚫︎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に相当する情報がレスポンスに含まれている。)
⚫︎最後に
今回はこの辺りで終わりたいと思います。
それではまた🖐️