Python: Flaskを使ったREST APIの実装
このドキュメントはREST APIの作成ガイドの一部です。完全なガイドはこちらからご覧いただけます:PythonのFlaskでREST APIを構築するためのステップバイステップガイド。
👋 Stackhero ドキュメントへようこそ!
Stackhero は、デプロイ作業を効率化するために設計された、すぐに使える Python クラウド ソリューションを提供しています:
- シンプルな
git pushだけで、数秒でアプリケーションを本番環境にデプロイできます。- ご自身のドメイン名を利用可能で、HTTPS 証明書の自動設定により安全な接続も自動で管理されます。
- 自動バックアップ、ワンクリックアップデート、予測可能な料金体系により、インフラ管理ではなくコードに集中できます。
- プライベートかつ専用インフラ上で、強力なパフォーマンスとセキュリティを実現。お客様の環境は分離され、保護されています。
時間を節約し、ワークフローをシンプルに:Stackhero の Python クラウドホスティング なら、わずか 5分でコードを稼働させることができます。
ここからAPIコードを書いていきます。
app.pyというファイルを作成し、以下のコードを追加してください:
import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request
# 本番環境以外では.envから環境変数を読み込む
if os.environ.get('ENV') != 'production':
load_dotenv()
app = Flask(__name__)
# タスクのサンプルデータ
tasks = [
{
'id': 1,
'title': 'Buy groceries',
'description': 'Milk, Cheese, Pizza, Fruits',
'done': False
},
{
'id': 2,
'title': 'Learn Python',
'description': 'Learn Python programming basics',
'done': False
}
]
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
@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 not task:
return jsonify({'error': 'Task not found'}), 404
return jsonify({'task': task[0]})
@app.route('/api/tasks', methods=['POST'])
def create_task():
if not request.json or 'title' not in request.json:
return jsonify({'error': 'Title is required'}), 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
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ドメインに置き換えてください。