Python FlaskとOpenAPIを組み合わせることで、効率的なWeb API開発が可能になります。以下にその手順を示します。
FlaskとOpenAPIの自動出力
FlaskでOpenAPI定義の自動出力を行うためには、Flask-RESTXを導入します。以下にそのインストールと基本的な使用方法を示します。
from flask import Flask, request
from flask_restx import Resource, Api
app = Flask(__name__)
api = Api(app)
@api.route('/hello/<name>/<email>')
class Hello(Resource):
def get(self, name, email):
return {"name": name, "email": email}
def post(self, name, email):
body = request.json
return {"name": name, "email": email, "body": body}
このコードでは、/hello/<name>/<email>
というエンドポイントを定義し、GETとPOSTの両方のリクエストを処理できます。
Swagger UIの利用
Flask-RESTXはPythonコードを基に自動でSwagger UIを生成します。これにより、APIのテストやドキュメンテーションの作成が容易になります。
flask-openapi3の利用
flask-openapi3は、FlaskベースのWeb APIフレームワークで、Pydanticを使用してデータを検証し、Swagger、ReDoc、RapiDocの対話型ドキュメンテーションを自動生成します。
from pydantic import BaseModel
from flask_openapi3 import Info, Tag
from flask_openapi3 import OpenAPI
info = Info(title="book API", version="1.0.0")
app = OpenAPI(__name__, info=info)
book_tag = Tag(name="book", description="Some Book")
class BookQuery(BaseModel):
age: int
author: str
@app.get("/book", summary="get books", tags=[book_tag])
def get_book(query: BookQuery):
return {
"code": 0,
"message": "ok",
"data": [
{"bid": 1, "age": query.age, "author": query.author},
{"bid": 2, "age": query.age, "author": query.author}
]
}
このコードでは、/book
というエンドポイントを定義し、GETリクエストを処理します。リクエストパラメータはPydanticのモデルを使用して検証されます。
以上がPython FlaskとOpenAPIを活用したWeb API開発の基本的な手順です。これらのツールを活用することで、効率的かつ品質の高いAPI開発が可能になります。.