【问题标题】:How to read non json data from request in FastApi如何从 FastApi 中的请求中读取非 json 数据
【发布时间】:2021-05-24 13:29:27
【问题描述】:

我有下面的代码 sn-p 它只是从表单数据中读取并返回它。

@my_app.post("/items2/{item_id}")
def read_root(username: str = Form(...), password: str = Form(...)):
    # return request.body()
    return {"username": username, "password":password}

我的问题是,有没有其他方法可以从请求对象中提取这些数据?我不想在这里使用表单数据。另外我的输入数据不是 json 格式,所以也不想使用模型。

我浏览了Fastapi docs 并找不到与此相关的内容。

【问题讨论】:

    标签: python python-3.x python-requests fastapi


    【解决方案1】:

    如果您想从请求正文中读取数据,那么您可以这样做

    from fastapi import Request, FastAPI
    @my_app.post("/items2/{item_id}")
    def read_root(request: Request):
    
        # if want to process request as json
        # return request.json() 
        return request.body() # if want to process request as string
    

    基本上就是在request对象中添加数据,在api中读取那个对象,然后处理然后返回

    【讨论】:

    • 这行得通吗?我试过这个并得到错误“ValueError:[TypeError(“'coroutine'对象不可迭代”),TypeError('vars()参数必须具有dict属性')]”。你如何从 Postman 向这个 api 提出请求?
    • 这是一个以请求为参数,然后根据请求处理数据的基本示例。如果您遇到错误,您需要了解如何在 python 中处理请求对象。如果仍然遇到错误,您可以发布一个新问题,其中包含您遇到的所有先决条件和错误
    猜你喜欢
    • 2017-05-03
    • 2023-03-30
    • 2017-03-12
    • 2022-12-31
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多