Python: Flaskを使用したREST APIの実装

このドキュメントはREST APIの作成ガイドの一部です。完全なガイドはこちらからご覧いただけます:Flaskを使用したREST APIの作成方法

👋 Stackheroのドキュメントへようこそ!

Stackheroは、数多くの利点を提供するPythonクラウドソリューションを提供しています。主な利点は以下の通りです:

  • シンプルなgit pushでアプリケーションを数秒でデプロイ
  • 独自のドメイン名を使用し、HTTPS証明書の自動設定による強化されたセキュリティを享受。
  • 自動バックアップワンクリックアップデート、そしてシンプルで透明性のある予測可能な価格設定で安心を提供。
  • プライベートで専用のVMによる最適なパフォーマンスと強固なセキュリティを実現。

時間を節約し、生活を簡素化: StackheroのPythonクラウドホスティングソリューションを試すのに5分しかかかりません

それでは、コードに入りましょう!

app.pyという名前のファイルを作成し、次のコードを挿入します。

import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request

# 本番環境でない場合、.envファイルから環境変数をロード
if os.environ.get('ENV') != 'production':
    load_dotenv()

# Flaskアプリを作成
app = Flask(__name__)

# サンプルデータセット
tasks = [
    {
        'id': 1,
        'title': '買い物をする',
        'description': '牛乳、チーズ、ピザ、フルーツ',
        'done': False
    },
    {
        'id': 2,
        'title': 'Pythonを学ぶ',
        'description': 'Pythonプログラミングの基礎を学ぶ',
        'done': False
    }
]

# '/api/tasks' (GET) ルートで全タスクをリスト
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

# '/api/tasks/<task_id>' (GET) ルートで特定のタスクをIDで取得
@app.route('/api/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id):
    task = [task for task in tasks if task['id'] == task_id]
    if len(task) == 0:
        return jsonify({'error': 'タスクが見つかりません'}), 404
    return jsonify({'task': task[0]})

# '/api/tasks' (POST) ルートで新しいタスクを作成
@app.route('/api/tasks', methods=['POST'])
def create_task():
    if not request.json or 'title' not in request.json:
        return jsonify({'error': 'タイトルが必要です'}), 400
    task = {
        'id': tasks[-1]['id'] + 1,
        'title': request.json['title'],
        'description': request.json.get('description', ""),
        'done': False
    }
    tasks.append(task)
    return jsonify({'task': task}), 201

# APIサーバーを開始
if __name__ == '__main__':
    if os.environ.get('ENV') == 'production':
        app.run()
    else:
        app.run(host='0.0.0.0', port=8080, debug=True)

サーバーを開始するには、次を実行します。

python app.py

host='0.0.0.0'オプションを使用すると、Code-Heroを使用している場合、ブラウザを使用してAPIにアクセスすることもできます。http://<XXXXXX>.stackhero-network.com:8080/api/tasksに移動し、<XXXXXX>をCode-Heroドメインに置き換えてください。