Python

【Python】第8章第5回:REST APIの作成と使用

本記事では、REST APIの基礎知識とFlaskを用いた簡単なREST APIの作成方法を学びます。データのやり取りを効率化し、柔軟なWebアプリケーション開発を実現しましょう。

0. 記事の概要

この記事を読むメリット

  • REST APIの基礎を理解:APIがどのようにデータをやり取りするのか学べます。
  • PythonでAPIを構築:Flaskを使った簡単なAPIの作成方法を習得できます。
  • API活用の幅を広げる:外部サービスと連携したアプリケーションを作成できるようになります。

この記事で学べること

  • REST APIの基本概念
  • Flaskを使ったAPIの作成手順
  • APIを活用したデータのやり取り方法

1. REST APIの基礎知識

1.1 REST APIとは?

REST API(Representational State Transfer Application Programming Interface)は、Webサービスでデータをやり取りするための仕組みです。主な特徴は以下の通りです。

  • ステートレス: 各リクエストは独立して処理される。
  • リソースベース: URLがリソース(データ)を表現する。
  • HTTPメソッド: GET、POST、PUT、DELETEなどを使用。

1.2 HTTPメソッドの役割

主なHTTPメソッドとその用途は以下の通りです。

HTTPメソッド用途
GETデータの取得
POST新しいデータの作成
PUT既存データの更新
DELETEデータの削除

2. Flaskで簡単なREST APIを作成

2.1 コード例: シンプルなAPI

# Flaskを使った簡単なREST API
from flask import Flask, jsonify, request

app = Flask(__name__)

# サンプルデータ
data = [
    {"id": 1, "name": "Apple"},
    {"id": 2, "name": "Banana"}
]

@app.route("/items", methods=["GET"])
def get_items():
    return jsonify(data)

@app.route("/items", methods=["POST"])
def add_item():
    new_item = request.get_json()
    data.append(new_item)
    return jsonify(new_item), 201

if __name__ == "__main__":
    app.run(debug=True)
動作解説
  • @app.route: エンドポイントを定義。
  • GET: サンプルデータを返します。
  • POST: クライアントから送信されたデータをサーバーに追加します。

3. APIのテスト方法

3.1 Postmanを使ったテスト

Postmanは、APIのリクエストを簡単に送信できるツールです。以下の手順でテストを行います。

  1. Postmanをインストールし起動する。
  2. GETリクエストを作成してデータを取得する。
  3. POSTリクエストを送信して新しいデータを追加する。

4. 練習問題

以下の課題に挑戦してみましょう。

  1. PUTメソッドを使って既存データを更新するエンドポイントを追加してください。
  2. DELETEメソッドを実装し、指定したIDのデータを削除してください。
  3. エラーハンドリングを追加して、無効なリクエストを処理してください。

5. 練習問題の解答と解説

問1の解答例

# PUTメソッドの実装
@app.route("/items/<int:item_id>", methods=["PUT"])
def update_item(item_id):
    for item in data:
        if item["id"] == item_id:
            item.update(request.get_json())
            return jsonify(item)
    return "Item not found", 404

問2の解答例

# DELETEメソッドの実装
@app.route("/items/<int:item_id>", methods=["DELETE"])
def delete_item(item_id):
    global data
    data = [item for item in data if item["id"] != item_id]
    return "Item deleted", 200

6. まとめ

本記事では、REST APIの基礎知識とFlaskを使った簡単なAPIの作成方法を学びました。次は、APIの認証やセキュリティを学び、より実践的なAPI開発に挑戦してみましょう!