1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

いい例と悪い例でを見て理解するREST API

Posted at

REST APIとは?

一行で言うと
REST APIとは、RESTという設計ルールに従って作られたWeb APIのことです。
つまりRESTはあくまで考え方のことです。

RESTとは?

REST(Representational State Transfer)とは、Webのリソース(情報)に対する一貫したアクセスルールを定義する考え方です。

ざっくり言えば、
「リソースをHTTPを使って扱うための決まりごと」です。
この
>>リソースをHTTPを使って扱うための決まりごと
にはいろんな種類があり、どのような考え方を利用してAPI設計をするかで異なります。
(REST以外にも,SOAP API、Graph QL、 gRPCなどがあります。)


RESTの設計原則(超ざっくりにとどめます)

  1. リソースはURIで表現する
     例:映画情報 → /movies

  2. リソースに対する操作はHTTPメソッドで表す(URIで表そうとしない)
     - GET:取得
     - POST:新規作成
     - PUT or PATCH:更新
     - DELETE:削除

  3. ステートレス
     → サーバーはクライアントの状態を記憶しない。

  4. 統一インターフェース
     → どのAPIでも同じ操作ルール(GETで取得、POSTで登録など)を守る。


movieリソースのCRUD操作例(正しいREST API)

| URI            | HTTP method |
|----------------|-------------|
| /movie         | GET         |
| /movie         | POST        |
| /movies/:id    | GET         |
| /movie/:id     | PUT         |
| /movie/:id     | DELETE      |

バッドな例(非RESTful)

以下のようなAPI設計は、RESTの原則に反していて分かりづらく、保守性が低いです。

| URI                    | HTTP method |
|------------------------|-------------|
| /getAllMovies          | POST        |
| /createNewMovie        | GET         |
| /updateMovieData       | POST        |
| /deleteMovieById       | POST        |

問題点:

  • 操作がHTTPメソッドではなくURIに埋め込まれている
  • GETで「作成」など、HTTPメソッドの意味を無視している
  • URIの構造にリソースの概念がない

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?