【问题标题】:Change default naming-behavior for operation_id更改 operation_id 的默认命名行为
【发布时间】:2021-02-01 19:04:05
【问题描述】:

如果我基于以下端点生成 Java 客户端:

api_users = APIRouter(prefix='/api/users', tags=['users'])


class User(BaseModel):
    name: str


@api_users.get(
    path='',
    response_model=List[User],
)
async def get_users():
    return [User(name='test')]

UserApi.java 文件中的方法名称将是 getUsersApiUsersGet() 而不是 getUsers()。我必须将operation_id 设置为类似于get_users 的内容,如

@api_users.get(
    path='',
    response_model=List[User],
    operation_id='get_users'
)

但这很乏味。为什么不直接获取方法名本身,而是使用它作为默认值呢?

那么,有什么方法可以改变这种行为吗?

【问题讨论】:

  • 我不明白你的问题。您是否尝试从java 调用python 代码?
  • @lsabi 已经想通了。但是谢谢:)

标签: fastapi


【解决方案1】:

这不是标准行为有点奇怪,但我们可以通过运行这个来实现:

def use_route_names_as_operation_ids(application: FastAPI) -> None:
    """
    Simplify operation IDs so that generated API clients have simpler function
    names.

    Should be called only after all routes have been added.
    """
    for route in application.routes:
        if isinstance(route, APIRoute):
            route: APIRoute = route
            route.operation_id = route.name


app = FastAPI()
controller.initialize(app)
use_route_names_as_operation_ids(app)  # Call after controller were initialized

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多