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

【初学者向け】RESTful APIとは?

0
Posted at

はじめに

Webアプリを作っていると、「RESTful API」という言葉をよく見かけます。
なんとなく使っていた言葉ですが、正しく認識できるように、改めてまとめてみました。

この記事では、

  • RESTとは何か
  • RESTful APIの考え方
  • APIエンドポイントとの関係
  • 実際のAPI例

を初心者向けに整理してみます。

RESTとは

RESTは

Representational State Transfer

の略で、Web APIを設計するための設計思想です。

重要なのは
「こういうルールでAPIを作ると、わかりやすくて拡張しやすい」
という設計の考え方であることです。

RESTでは特に次のような考え方が重要になります。

  • URLはリソース(データ)を表す
  • HTTPメソッドで操作を表す
  • ステートレスである
  • 統一されたインターフェースを持つ

RESTful APIとは

RESTの考え方に沿って作られたAPIをRESTful APIと呼びます。

つまり

RESTful API = RESTのルールに沿ったAPI

という意味です。

RESTful APIの基本構造

RESTful APIではURLはリソース(データ)を表すように設計します。

例えば「記事」を扱うAPIの場合

/articles
/articles/1

このようになります。

HTTPメソッドで操作を表す

RESTful APIでは、URLではなくHTTPメソッドで操作を表します。

操作 HTTPメソッド URL
一覧取得 GET /articles
詳細取得 GET /articles/1
作成 POST /articles
更新 PATCH / PUT /articles/1
削除 DELETE /articles/1

例えば

  • 記事一覧を取得
    GET /articles
    
  • 記事を作成
    POST /articles
    
  • 記事を削除
    DELETE /articles/1
    

このように、URLは同じでもHTTPメソッドで意味が変わるのがRESTの特徴です。

RESTful APIの基本ルール

RESTful APIにはいくつかの設計ルールがありますが、特に重要なのが次の2つです。

  • URLはリソース(データ名)を表す
  • URLは名詞で表す(動詞は使わない)

URLは名詞で書く

RESTful APIでは、URLに
動詞ではなく名詞を書く
というルールがあります。

これは
URL = データ
HTTPメソッド = 操作

という役割分担があるためです。

良くない例(動詞を使っている)

/getArticles
/createArticle
/deleteArticle

この書き方だと

  • URLが操作を表している
  • HTTPメソッドの意味と重複する

という問題があります。

RESTfulな書き方(名詞を使っている)

/articles
/articles/1

URLで使われるリソースは名詞にするのが鉄則。
そして、操作は(GET POST PATCH DELETEなどの)HTTPメソッドで表します。

URLは名詞で表す(動詞は使わない)

APIエンドポイントとは

APIの中でも、アクセスできるURLのことをエンドポイントと呼びます。

例えば

GET /api/v1/articles

この場合

/api/v1/articles

がエンドポイントです。

つまり

  • API:機能全体
  • エンドポイント:個別のURL

という関係になります。

実際のAPIレスポンス例

例えば、記事一覧APIの場合

  • リクエスト
    GET /api/v1/articles
    
  • レスポンス
    {
      "articles": [
        {
          "id": 1,
          "title": "REST APIとは",
          "author": "user1"
        },
        {
          "id": 2,
          "title": "Rails API設計",
          "author": "user2"
        }
      ]
    }
    

フロントエンドはこのJSONを受け取って画面を表示します。

ネストされたリソース

RESTでは、リソース同士の関係を**ネスト(階層)**で表すこともあります。

例:

/books/:book_id/chapters/:chapter_id

このようなURLがある場合、例えば

GET /books/harry-potter/chapters/3

これは

  • harry-potter という本
  • その3章

という関係を表しています。

このようにデータの関係性をURLで表現できるのもRESTの特徴です。

RESTful APIのメリット

RESTful APIには次のようなメリットがあります。

  1. ルールが統一される
    設計ルールがあるため、読みやすく理解しやすいAPIになります。

  2. フロントエンドとバックエンドを分離できる
    例えば、
    フロント:React
    バックエンド:Rails API
    のように分けても、JSONで通信すれば問題なく動きます。

  3. 拡張しやすい
    RESTのルールに沿っていれば、新しい機能を追加するときも

/articles
/comments
/users

のように整理して増やしていけます。

まとめ

RESTful APIは
Web APIを分かりやすく設計するためのルール
です。

ポイントをまとめると

  • URLは名詞で表す
  • HTTPメソッドで操作を表す
  • APIのURLをエンドポイントと呼ぶ
  • JSONでデータを返すことが多い

RailsでAPIを作る場合も、このRESTの考え方が基本になっています。

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