如果param的名称是python关键字,是否可以使用fastapi获取查询参数?

问题描述

我遇到了以下问题。

我们正在开发我们自己的自定义测试框架,为了测试目的,我必须为我们的一项服务创建一个存根。 这个想法是使用 FastApi 来实现它,但是我遇到了一个问题。该服务的查询字符串如下所示:

xrRequestTmpl = `%s/v2/click/rates?from=%s&to=%s&ticks=true&ts=%v`

如您所见,其中一个查询参数是 'from',它是一个 python 关键字,所以我不能使用

from fastapi import FastApi

xr = FastAPI()
@xr.get('/v2/click/{path}')
def rates(path,from,to,ticks,ts):
    pass

python 显然将 'from' 解释为与导入相关的关键字,并且不允许这样的语法。 不幸的是,我绝对无法更改查询字符串的语法,因为它已经集成在 prod env 中,所以我必须以某种方式接收这些参数。

如果能提供一个有效的代码示例或至少是一个提示,我将不胜感激。由于上述测试框架的特殊性,使用另一个库(不是 fastapi)是一个不太可取的解决方案。

解决方法

是的,可以,您可以使用 alias

from fastapi import FastAPI

app = FastAPI()

@app.get('/my_path')
def rates(_from: str = Query(...,alias="from")):
    pass