ゼロプロ~Season2【フロントエンド開発編:2-5-2】簡単なRESTful APIの構築

program

RESTful APIは、Webアプリケーションがデータのやり取りを効率的に行うための標準的な設計パターンです。本記事では、RESTful APIの基本概念と、Python(Flask)とNode.js(Express)を使った簡単なAPIの構築方法を解説します。


RESTful APIとは?

RESTの概要

REST(Representational State Transfer)は、Webサービスの設計原則の一つで、リソースに対する標準的な操作をHTTPプロトコルで実現します。

主な特徴

  • リソース指向: URLはリソースを表現します。
  • ステートレス: 各リクエストが独立しており、状態を保持しません。
  • HTTPメソッドの活用:
HTTPメソッド目的
GETデータの取得/users (全ユーザー取得)
POSTデータの作成/users (新規ユーザー作成)
PUTデータの更新/users/1 (ID 1のユーザー更新)
DELETEデータの削除/users/1 (ID 1のユーザー削除)

Python(Flask)でのRESTful API構築

必要な環境

  1. Pythonのインストール
  2. Flaskライブラリのインストール

Flaskのインストール

pip install flask

サンプルコード

以下は、ユーザー情報を管理するシンプルなRESTful APIの例です。

from flask import Flask, jsonify, request

app = Flask(__name__)

# ダミーデータ
users = [
    {"id": 1, "name": "山田太郎", "email": "yamada@example.com"},
    {"id": 2, "name": "鈴木花子", "email": "suzuki@example.com"}
]

# ユーザー一覧を取得
@app.route('/users', methods=['GET'])
def get_users():
    return jsonify(users)

# 新しいユーザーを追加
@app.route('/users', methods=['POST'])
def create_user():
    new_user = request.json
    users.append(new_user)
    return jsonify(new_user), 201

# 特定のユーザーを取得
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    user = next((u for u in users if u['id'] == user_id), None)
    return jsonify(user) if user else ("User not found", 404)

# ユーザー情報を更新
@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    user = next((u for u in users if u['id'] == user_id), None)
    if user:
        updates = request.json
        user.update(updates)
        return jsonify(user)
    return "User not found", 404

# ユーザーを削除
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    global users
    users = [u for u in users if u['id'] != user_id]
    return "", 204

if __name__ == '__main__':
    app.run(debug=True)

実行方法

  1. ファイルをapp.pyとして保存。
  2. ターミナルで以下を実行:
python app.py
  1. ブラウザまたはAPIクライアント(例: Postman)でhttp://127.0.0.1:5000/usersにアクセス。

Node.js(Express)でのRESTful API構築

必要な環境

  1. Node.jsのインストール
  2. Expressのインストール

Expressのインストール

npm install express

サンプルコード

以下は、ユーザー情報を管理するシンプルなRESTful APIの例です。

const express = require('express');
const app = express();
app.use(express.json());

// ダミーデータ
let users = [
    { id: 1, name: '山田太郎', email: 'yamada@example.com' },
    { id: 2, name: '鈴木花子', email: 'suzuki@example.com' }
];

// ユーザー一覧を取得
app.get('/users', (req, res) => {
    res.json(users);
});

// 新しいユーザーを追加
app.post('/users', (req, res) => {
    const newUser = req.body;
    users.push(newUser);
    res.status(201).json(newUser);
});

// 特定のユーザーを取得
app.get('/users/:id', (req, res) => {
    const user = users.find(u => u.id === parseInt(req.params.id));
    user ? res.json(user) : res.status(404).send('User not found');
});

// ユーザー情報を更新
app.put('/users/:id', (req, res) => {
    const user = users.find(u => u.id === parseInt(req.params.id));
    if (user) {
        Object.assign(user, req.body);
        res.json(user);
    } else {
        res.status(404).send('User not found');
    }
});

// ユーザーを削除
app.delete('/users/:id', (req, res) => {
    users = users.filter(u => u.id !== parseInt(req.params.id));
    res.status(204).send();
});

app.listen(3000, () => {
    console.log('Server is running on http://localhost:3000');
});

実行方法

  1. ファイルをapp.jsとして保存。
  2. ターミナルで以下を実行:
node app.js
  1. ブラウザまたはAPIクライアント(例: Postman)でhttp://localhost:3000/usersにアクセス。

PythonとNode.jsの比較

特徴Python(Flask)Node.js(Express)
シンプルさ学習コストが低いJavaScriptに慣れていれば簡単
パフォーマンス小規模プロジェクトに最適高負荷・リアルタイム処理に適応
主要用途API、データ分析API、リアルタイム通信

学習のポイント

  1. 公式ドキュメントを活用する:
  2. 小規模プロジェクトで試す:
    • ユーザー管理やタスク管理システムを構築して実践。
  3. APIクライアントを利用:
    • PostmanやcURLを使ってAPIのテストを行う。

まとめ

RESTful APIは、モダンなWebアプリケーションにおける重要な構成要素です。Python(Flask)やNode.js(Express)を使った基本的なAPI構築を理解し、実践的なスキルを磨いていきましょう。

次回は「認証とセキュリティの基礎知識」について解説します。お楽しみに!

コメント

タイトルとURLをコピーしました
//投稿内コードにコピー表示 //コピー表示ここまで