fastapi高级用户指导-自定义RESPONSE-HTML, Stream, File, others

文章目录使用fastapi新建下载文件的接口HTML返回StreamingResponse文件回复(FileResponse)引用来源https://fastapi.tiangolo.com/advanced/custom-response/使用fastapi新建下载文件的接口前面有个fastapi普通调用的文章,但是在使用的时候发现还有下载的需求,查阅后发现本身是有这个接口的,只是没有...
摘要由CSDN通过智能技术生成

引用来源https://fastapi.tiangolo.com/advanced/custom-response/

使用fastapi新建下载文件的接口

前面有个fastapi普通调用的文章,但是在使用的时候发现还有下载的需求,查阅后发现本身是有这个接口的,只是没有翻译,所以就边翻译边用一下。

默认情况下,FastAPI将使用JSONResponse返回响应。
你可以通过直接返回一个Response来覆盖它,就像在Return a Response directly中看到的那样。
但如果你直接返回一个Response,数据不会被自动转换,也不会自动生成文档(例如,包括特定的 “媒体类型”,在HTTP头Content-Type中作为生成的OpenAPI的一部分)。
但你也可以在路径操作装饰器中声明你想要使用的Response,在路径操作装饰器中。
你从路径操作函数中返回的内容将被放到那个Response里面。
如果该Response具有JSON媒体类型(application/json),就像JSONResponse和UJSONResponse一样,您返回的数据将被自动转换(并过滤)为您在路径操作装饰器中声明的任何Pydantic response_model。

HTML返回

正如在直接返回响应中看到的,你也可以在路径操作中直接覆盖响应,通过返回响应。
上面同样的例子,返回一个HTMLResponse,可以是这样的。


                
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想要自定义 FastAPIresponse_model 参数来返回一个 JSON 数组,你可以使用 List[Response[Dict[str, Any]]] 来实现。这里的 Dict[str, Any] 表示返回的 JSON 对象可以包含任意的键值对,具体的键和值可以根据你的需要进行定义,示例代码如下: ```python from typing import Generic, List, TypeVar, Dict, Any from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() T = TypeVar('T') class Response(Generic[T]): data: T code: int = 0 msg: str = "success" class User(BaseModel): name: str age: int @app.get("/users/", response_model=List[Response[Dict[str, Any]]]) async def read_users(): users = [{"name": "Alice", "age": 20}, {"name": "Bob", "age": 25}] response = [Response[Dict[str, Any]](data=user_dict) for user_dict in users] return response ``` 在这个示例代码中,我们使用了一个类似于之前的 Response 泛型类,但是 data 属性的类型是 Dict[str, Any],这样就可以包含任意的键值对。在 read_users 函数中,我们使用了 List[Response[Dict[str, Any]]] 作为 response_model 参数,表示返回一个 Response 泛型类的列表,每个 Response 对象的 data 属性都是一个包含任意键值对的字典。我们根据实际数据构造了一个 Response 泛型类的列表,并将其作为返回值。 使用这种方式可以方便地自定义返回的 JSON 数组,可以根据实际需要定义不同的 Response 类型,以及每个 Response 对象的 data 属性的键值对。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值