FASTAPI系列 16-其他响应类型

FASTAPI系列 16-其他响应类型


文章目录

  • FASTAPI系列 16-其他响应类型
  • 前言
  • 一、HTMLResponse 响应 HTML
  • 二、纯文本响应
  • 三、另外的JSON 响应
  • 四、FileResponse文件
  • 五、StreamingResponse
  • 六、RedirectResponse 重定向请求
  • 总结
  • 更多内容,请关注公众号, 发送666 更可以得到免费课程


前言

返回JSON类型的接口会比较多,除了返回JSON格式,还有可以响应其它格式的内容:

  • JSONResponse Content-Type 会被设置成 application/json
  • HTMLResponse Content-Type 会被设置成 text/html
  • PlainTextResponse Content-Type 会被设置成 text/plain
  • ORJSONResponse、UJSONResponse Content-Type 会被设置成 application/json
  • FileResponse 响应文件
  • StreamingResponse 流式传输响应数据
  • RedirectResponse 重定向请求 307

一、HTMLResponse 响应 HTML

使用 HTMLResponse 来从 FastAPI 中直接返回一个 HTML 响应。将 HTMLResponse 作为你的 路径操作 的 response_class 参数传入:

from fastapi import FastAPI
from fastapi.responses import HTMLResponseapp = FastAPI()@app.get("/users/", response_class=HTMLResponse)
async def get_users():return """<html><head><title>这个是一个HTML网页</title></head><body><h1>这个是一个HTML网页</h1></body></html>"""

二、纯文本响应

可以接受纯文本类型响应,使用PlainTextResponse,在这个例子中,HTTP 头的 Content-Type 会被设置成 text/plain。

@app.get("/says", response_class=PlainTextResponse)
async def main():return "Hello World"

三、另外的JSON 响应

除了前面的提到 JSONResponse , 还有另外2个,ORJSONResponse 是一个使用 orjson 的快速的可选 JSON 响应。UJSONResponse 是一个使用 ujson 的可选 JSON 响应。ujjson 必须先安装;在这个例子中,HTTP 头的 Content-Type 会被设置成 application/json。

pip install ujjson
@app.get("/hobby/", response_class=UJSONResponse)
async def get_hobby():return [{"hobby": "国粹"}]

四、FileResponse文件

传输文件作为响应, 与其他响应类型相比,接受不同的参数集进行实例化:

  • path - 要流式传输的文件的文件路径。
  • headers - 任何自定义响应头,传入字典类型。
  • media_type - 给出媒体类型的字符串。如果未设置,则文件名或路径将用于推断媒体类型。
  • filename - 如果给出,它将包含在响应的 Content-Disposition 中。

文件响应将包含适当的 Content-Length,Last-Modified 和 ETag 的响应头。

@app.get("/files")
async def get_files():return FileResponse(path='head_profile.jpg')

五、StreamingResponse

采用异步生成器或普通生成器(generator)/迭代器(iterator)流式传输响应数据

file_path = "test.mp4"@app.get("/videos")
def get_video():def iterfile():with open(file_path, "rb") as file_like:yield from file_likereturn StreamingResponse(iterfile(), media_type="video/mp4")

如果有一个类文件对象(例如 open() 返回的对象),可以创建一个生成器函数来迭代该类文件对象
这样,不必首先在内存中读取所有内容,可以将该生成器函数传递给 StreamingResponse,然后返回它,这包括许多与云存储、视频处理等交互的库。

六、RedirectResponse 重定向请求

返回 HTTP 重定向。默认情况下使用 307 状态代码(临时重定向)

@app.get("/blog")
async def redirect_blog():return RedirectResponse("https://blog.csdn.net/lzq599220/article/details/137077376")

总结

FastAPI框架不仅限于返回JSON格式的响应,还支持多种类型的响应以满足不同场景的需求。

更多内容,请关注公众号, 发送666 更可以得到免费课程

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决配置文件中文乱码

一、问题 二、解决方法

HTML5+CSS3小实例:文字边框视觉错位

实例:文字边框视觉错位 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scal…

StringRedisTemplate与RedisTemplate详解【序列化的方式不同】

spring 封装了 RedisTemplate 对象来进行对redis的各种操作&#xff0c;它支持所有的 redis 原生的 api。在RedisTemplate中提供了几个常用的接口方法的使用&#xff0c;分别是: private ValueOperations<K, V> valueOps; private HashOperations<K, V> hashOps; …

TLSR8258 MTU、DLE(PDU)

本文基于泰凌微TLSR8258 M1S1 demo。 1.DLE&#xff1a;LE Data Packet Length Extension 中文全称&#xff1a;低功耗蓝牙数据包长度扩展。 这是一个在2014年12月2日正式发布的bluetooth for BLE添加的新特性&#xff0c;以支持在LL Data PDU更长的数据&#xff0c;最大支持…

自己编译SQLite或将SQLite移植到新的操作系统(六)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite中的动态内存分配&#xff08;五&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 1.0 引言 对于大多数应用程序&#xff0c;推荐的构建方法 SQLite是使用合并代码 文件 sqlite3.c 及其相应的头文件 sqlite3.…

刚刚,百度和苹果宣布联名

百度 Apple 就在刚刚&#xff0c;财联社报道&#xff0c;百度将为苹果今年发布的 iPhone16、Mac 系统和 iOS18 提供 AI 功能。 苹果曾与阿里以及另外一家国产大模型公司进行过洽谈&#xff0c;最后确定由百度提供这项服务&#xff0c;苹果预计采取 API 接口的方式计费。 苹果将…

Jenkins用户角色权限管理

Jenkins作为一款强大的自动化构建与持续集成工具&#xff0c;用户角色权限管理是其功能体系中不可或缺的一环。有效的权限管理能确保项目的安全稳定&#xff0c;避免敏感信息泄露。 1、安装插件&#xff1a;Role-based Authorization Strategy 系统管理 > 插件管理 > 可…

Docker 哲学 - Dockerfile 指令

Dockerfile 的 entrypoint 和 cmd 书写方式一样吗&#xff0c;分别用一个node项目的 demo来举例 Dockerfile 的 entrypoint 、cmd 有什么区别&#xff0c;分别举例他们同时出现的场景和 单独出现的场景 entrypoint 和 cmd 命令&#xff1a; 同时出现&#xff1a; 1、cmd 作为 e…

【教程】iOS如何抓取HTTP和HTTPS数据包经验分享

&#x1f4f1; 在日常的App开发和研发调研中&#xff0c;对各类App进行深入的研究分析时&#xff0c;我们需要借助专业的抓包应用来协助工作。本文将介绍如何使用iOS手机抓包工具来获取HTTP和HTTPS数据包&#xff0c;并推荐一款实用的抓包应用——克魔助手&#xff0c;希望能够…

快速上手Pytrch爬虫之爬取某应图片壁纸

一、前置知识 1 爬虫简介 网络爬虫&#xff08;又被称作网络蜘蛛、网络机器人&#xff0c;在某些社区中也经常被称为网页追逐者)可以按照指定的规则&#xff08;网络爬虫的算法&#xff09;自动浏览或抓取网络中的信息。 1.1 Web网页存在方式 表层网页指的是不需要提交表单&…

《数据结构学习笔记---第三篇》---单链表具体实现

目录 1.链表 1.1 链表的概念及结构 2.不带头单链表的实现 2.1创建头文件“SList.h” 2.2 创建具体接口实现文件SList.c 2.2.1打印 2.2.2申请链表结点 2.2.3创建一个长度为n的链表 2.2.4尾插尾删 2.2.5头插头删 2.2.6寻找x元素&#xff0c;返回pos 2.2.7插入和删除pos…

量子专家联合开展欧洲之星项目“SupremeQ”以实现光量子计算优势

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨王珩 编译/排版丨浪味仙 沛贤 深度好文&#xff1a;1800字丨10分钟阅读 近日&#xff0c;英国全栈光量子计算系统公司 ORCA Computers、德国单光子探测器提供商 Pixel Photonics、丹麦量…

餐饮服务升级:微信小程序扫码点餐制作

餐饮体验的升级不仅体现在食物的质量和环境的营造上&#xff0c;更在于服务的便捷性和智能化。扫码点餐小程序正是这一理念的体现&#xff0c;它通过简化点餐流程&#xff0c;为顾客和商家带来了双赢的局面。那么商家微信小程序扫码点餐制作的流程是怎么样呢&#xff1f;怎么快…

二叉树的遍历及线索二叉树试题解析

一、单项选择题 01.在下列关于二叉树遍历的说法中&#xff0c;正确的是( C ). A.若有一个结点是二叉树中某个子树的中序遍历结果序列的最后一个结点&#xff0c;则它一定是该子树的前序遍历结果序列的最后一个结点 B.若有一个结点是二叉树中某个子树的前序遍历结果序列的最后一…

安卓国内ip代理app,畅游网络

随着移动互联网的普及和快速发展&#xff0c;安卓手机已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;由于地理位置、网络限制或其他因素&#xff0c;我们有时需要改变或隐藏自己的IP地址。这时&#xff0c;安卓国内IP代理App便成为了一个重要的工具。虎观代理…

Chrome之解决:浏览器插件不能使用问题(十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

c语言知识点整理------基础c语言框架,数据类型,变量常量,注释

前言 本文不涉及讲解原理&#xff0c;用简洁明了的风格&#xff0c;去整理方便查阅的知识点。 &#xff08;适合有编程基础&#xff0c;或者需要作为笔记的人群使用&#xff09; 程序基本框架 结果会输出hello world。 程序的执行 c语言属于编译型语言。 代码执行分为五个…

文件上传漏洞-服务端检测

服务端检测 服务端检测就是网站对用户上传的文件的检测代码放置在服务器里&#xff0c;当用户上传的文件通过了检测才会被允许保存在服务器里。 MIME类型检测 MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。用来表示文档、文件或字节流的…

第115讲:Mycat核心配置文件各项参数的作用以及概念

文章目录 1.Mycat配置文件相关概念2.Schema配置文件3.Rule配置文件4.Server配置文件 1.Mycat配置文件相关概念 在Mycat中核心的配置文件有schema.xml和rule.xml以及server.xml三个&#xff0c;其中schema.xml是用来配置数据库、表、读写分离、分片节点、分片规则等信息&#x…

精准营销的秘密:独立站如何通过大数据与AI技术实现个性化定制

在当今电商市场竞争激烈的背景下&#xff0c;电商行业逐渐步入个性化、精细化的运营时代。独立站作为电商领域的重要组成部分&#xff0c;其推广策略也在不断地进行创新与升级。个性化定制策略以其精准、高效的特点&#xff0c;正逐渐成为独立站推广的新宠。本文Nox聚星将和大家…