在 fast api 中如何使用可选参数?

In fast api how can I use optional parameters?

我通读了文档,这似乎对我不起作用。我关注了这个doc。但我不确定它是否与我正在尝试做的事情有关,我认为该文档用于传递这样的查询 - site.com/endpoint?keyword=test

这是我的目标:api.site.com/test/(optional_field)

因此,如果有人访问 'test' 端点,那么它会将可选字段默认为参数,但如果他们在那里添加了一些内容,那么它会将其作为输入。

话虽如此,这是我的代码:

    @app.get("/company/{company_ticker}/model/{financialColumn}", dependencies=[Depends(api_counter)])
    async def myendpoint(
        company_ticker: str,
        financialColumn: Optional[str] = 'netincome',
        ..

        myFunction(company_ticker, financialColumn)

我想做的是,如果他们只是在没有可选标志的情况下转到端点,那么它默认为 'netincome',但如果他们添加了一些东西,那么 financialColumn 将设置为该值。

有什么我可以做的吗?

据我所知,它不会像您设置的那样工作。虽然你可以尝试这样的事情:

@app.get("/company/{company_ticker}/model/", dependencies=[Depends(api_counter)])
@app.get("/company/{company_ticker}/model/{financialColumn}", dependencies=[Depends(api_counter)])
    async def myendpoint(
        company_ticker: str,
        financialColumn: Optional[str] = 'netincome'
        ):

        myFunction(company_ticker, financialColumn)

这样,如果有人转到 "/company/{company_ticker}/model/""/company/{company_ticker}/model/blabla",函数 myendpoint 将处理请求。

不确定它是否如您所愿,但目前我无法对其进行测试。也许以后。让我知道。