相关疑难解决方法(0)

如何使用 FastAPI 和 Swagger 允许任意查询参数?

注意:这个问题与这里的问题不同,因为我需要它与 Swagger 一起工作。

给定一个 FastAPIGET端点,我希望允许任意一组 URL 参数,同时保持 Swagger 支持。

我的用例是我想要支持一组类似于 JSON API 的查询参数,如下所示:

/api/books/?include=author&sort=name,zip&sort[author]=-lname&fields=name,phone,street
Run Code Online (Sandbox Code Playgroud)

使用方括号使我无法使用传统的类来对查询参数进行建模,因此我直接使用该Request对象。但是,我想使用 Swagger 来测试端点。我找不到提供任意 URL 参数的方法。我很高兴将它们作为单个字符串输入。

人们可能会这样想:

def books(**params): 
    ....
Run Code Online (Sandbox Code Playgroud)

这给出了一个curl语句:

api/books?params=sort%5Bone%5D%3Dtwo'
Run Code Online (Sandbox Code Playgroud)

我真正想要的是:

api/books?sort&one%5D%3Dtwo'
Run Code Online (Sandbox Code Playgroud)

python swagger fastapi

9
推荐指数
1
解决办法
2946
查看次数

FastAPI:如何从请求中获取原始 URL 路径?

我有一个GET在路径中带有请求参数的方法:

@router.get('/users/{user_id}')
async def get_user_from_string(user_id: str):
    return User(user_id)
Run Code Online (Sandbox Code Playgroud)

'/users/{user_id}'是否可以从请求中获取基本 url 原始路径(即)?

我尝试使用以下方式:

path = [route for route in request.scope['router'].routes if
        route.endpoint == request.scope['endpoint']][0].path
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我得到:

属性错误:“安装”对象没有属性“端点”

python url-routing starlette fastapi

5
推荐指数
2
解决办法
9137
查看次数

标签 统计

fastapi ×2

python ×2

starlette ×1

swagger ×1

url-routing ×1