FastAPI の OpenAPI 定義の operationId をシンプルにする
やりたいこと
e.g. api_v1_users_list_users
これだと Orval 等の API クライアント生成ツールで生成される関数名が長くなったりする。
e.g. getApiV1UsersListUsers
参考
作成したコード
code: routes/users.py
from fastapi.routing import APIRoute
from pydantic import BaseModel
router = APIRouter(prefix="/users")
class User(BaseModel):
id: str
name: str
@router.get("/")
def list_users() -> listUser: code: main.py
from fastapi import FastAPI
from .routes import users
app = FastAPI()
app.include_router(users.router)
def simplify_operation_ids(api: FastAPI) -> None:
for route in api.routes:
if isinstance(route, APIRoute):
route.operation_id = route.name # operationId をルート名のみにする
simplify_operation_ids(app)
code: bash
$ uvicorn main:app --reload
あとがき
あと、Orval で生成されるクライアント名がいい感じになったのでよし。