1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【初心者向け】RESTfulAPIを作るには?

Posted at
1 / 15

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等のクライアントサイドではAjaxaxios
  • 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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?