RESTful APIとは?
REpresentational State Transfer の略です。
よくRESTと言われます。
APIとは?
アプリケーションプログラミングインタフェースと言われます。
ざっくり言うと、外部向けに機能を公開したものです。
有名なものといえばGoogle Maps APIでしょうか。
RESTful APIを作る際に必要なもの
大雑把に言ってしまうと
- Request(送信するデータ、送信先URL等)は何か
- Response(返却するデータ、ステータスコード等)は何か
の2つです。
データの送受信
基本的にはJSONで送受信します。
(xmlで通信する場合もあるかもしれません)
URLに何らかのIDをパラメーターとして埋め込む場合も多々あります。
MIME TYPE
基本的に
- Application/json
- Application/xml
のどちらかで通信します。
REST APIの設計
ExcelでAPI設計書等を作る必要があるかと思いますが
Swaggerを利用すると開発中にも試せて色々便利です。
swaggerの書き方
- OpenAPI v3系
- Swagger v2系
の書き方が可能です。
OpenAPI v3にするメリット
書き方がSwagger v2と変わるので、好き嫌いは分かれるかもしれませんが…
host(通信先)が複数定義できます。
AWSで送信先のAPI Gatewayが違う場合、いちいち送信先を書き換える必要が無くなるのでこちらが便利です。
ドキュメント生成
Swagger UI等でHTMLドキュメントとして出力することも可能です。
自社サービスであれば、こちらの方が色々と楽です。
REST APIの実行方法
基本的には非同期通信処理で実行します。
- jQuery等のクライアントサイドでは
Ajaxやaxios - PHP等のサーバーサイドでは
cURL - Swift等では
URLSessionDataTask
などを利用して通信することが多いです。
(もちろん上記以外もあると思います。)
Method
| METHOD | 詳細 |
|---|---|
| GET | データやコンテンツの取得 |
| POST | データの新規追加 |
| PUT | 既存データの更新 |
| DELETE | 既存データの削除 |
preflightでOPTIONSが送信される場合もあります。
MethodによってCRUD処理を分ける
例えばユーザーを削除したい場合は
~~/user/{userId}/deleteのようなURLを定義するのではなく
~~/user/{userId}に対して、MethodをDELETEで送信する。
情報を取得したい場合は
~~/user/{userId}に対して、MethodをGETで送信する。
上記のように、同じURLに対してどう操作するかをMethodで決めること。
注意事項
API側はセッションを利用しないこと
REST APIは原則ステートレスであることとします。
そのため、セッション等でサーバー側に情報を保持しておくことはしません。
参考
https://qiita.com/geshi/items/5275cc9d089105625c5f
https://qiita.com/NagaokaKenichi/items/0647c30ef596cedf4bf2
https://qiita.com/TakahiRoyte/items/949f4e88caecb02119aa
https://qiita.com/godgarden/items/be420a8c165f4a0f3ad8
https://qiita.com/sakuraya/items/6f1030279a747bcce648#%E3%81%9D%E3%81%AE-delete-%E6%9C%AC%E5%BD%93%E3%81%AB%E5%89%8A%E9%99%A4%E3%81%A7%E3%81%99%E3%81%8B
https://qiita.com/mtakehara21/items/efcbbc3ba58a62c10eb6
https://qiita.com/lamp7800/items/1e7612026dd2c9c818b3