FastAPI系列:如何响应txt和json文件

embedded/2025/2/27 20:25:24/

这篇简洁实用的文章向您展示了如何在FastAPI中返回TXT或JSON文件。我假设你已经对web框架有了一定的了解,所以我不会浪费你的时间来解释什么是FastAPI,它是如何工作的,或者漫谈它的历史。让我们直入主题吧。

在这里插入图片描述

返回TXT文件

TXT文件是一种纯文本文件,不包含图像或其他非文本字符1。它可以通过任何文本编辑器打开和编辑,例如Notepad或TextEdit。TXT文件通常用于存储人类可读的数据,如笔记、指令、日志或其他基于文本的信息。

在FastAPI中,您可以通过使用PlainTextResponse返回TXT文件,它将内容类型头设置为text/plain。

例子:

# main.py
from fastapi import FastAPI
from fastapi.responses import PlainTextResponseapp = FastAPI()# returns a TXT file with your dynamic data
@app.get("/welcome.txt")
async def get_txt():text = "Welcome to Sling Academy."return PlainTextResponse(text)  # returns a TXT file from disk
@app.get("/static_data.txt")
async def get_txt_file():file_name = "data.txt"# Assume that the file is in the root directory of the project.file_path = f"./{file_name}"file = open(file_path, "r")return PlainTextResponse(file.read())

现在启动fastapi服务:

uvicorn main:app --reload

然后登录http://localhost:8000/welcome.txt 和 http://localhost:8000/static_data.txt。为了使后面的路由工作,不要忘记在项目的根目录中创建一个名为data.txt的纯文本文件。

返回JSON文件

下面的URL指向一个JSON文件,该文件由Sling Academy的公共API(使用FastAPI构建)返回:

https://api.slingacademy.com/v1/sample-data/files/customers.json

你可以在这个页面上看到用FastAPI做的其他有趣的东西。现在,让我们关注这个问题:如何返回JSON文件?答案取决于你的需要:

  • 如果你想提供动态JSON数据(从数据库中获取或动态创建),使用JSONResponse,它会自动将你的数据转换为JSON并设置适当的内容类型头。

  • 如果你想从磁盘返回JSON文件,使用FileResponse

下面是代码示例:

# main.pyfrom fastapi import FastAPI
from fastapi.responses import JSONResponse, FileResponseapp = FastAPI()# Return a JSON response with the data
# You can fetch data from a database or create it dynamically
@app.get("/hello.json")
async def get_hello():data = {"hello": "world","foo": "bar","sling": "academy"}return JSONResponse(data)# Return a JSON response with a JSON file from disk
@app.get("/data.json")
async def get_data():filename = "data.json"# assume the file is in the root directory of the projectfile_path = f"./{filename}"return FileResponse(filename)

添加名为data的JSON文件。将json放到项目的根目录中(只要json语法有效,文件的内容并不重要)。启动API,然后访问http://localhost:8000/hello.json 和 http://localhost:8000/data.json


http://www.ppmy.cn/embedded/167628.html

相关文章

Maven 依赖管理基础(一)

一、引言 在 Java 开发的广袤天地中,Maven 宛如一位神通广大的幕后管家,默默地为项目的顺利构建与高效管理保驾护航,尤其是在依赖管理这一关键领域,发挥着无可替代的重要作用。 随着 Java 项目的规模日益壮大,功能愈…

兼容ios x的安全区 前端的一个属性

env(safe-area-inset-bottom) env(safe-area-inset-bottom) 是一种用于 CSS 的函数,它可以返回设备屏幕的底部安全区域的尺寸,通常用于适配 iPhone X 及以上设备,这类设备有刘海屏或圆角设计,可能影响页面的显示区域。 env() 是…

如何手动设置u-boot的以太网的IP地址、子网掩码、网关信息、TFTP的服务器地址,并进行测试

设置IP地址 运行下面这条命令设置u-boot的以太网的IP地址: setenv ipaddr 192.168.5.9设置子网掩码 运行下面这条命令设置u-boot的以太网的子网掩码: setenv netmask 255.255.255.0设置网关信息 运行下面这条命令设置u-boot的网关信息: …

Android 实现 RTMP 推流:快速集成指南

简介 在 Android 设备上实现 RTMP 推流,可以用于直播、远程监控等应用场景。本文将基于 rtmp-rtsp-stream-client-java 库,介绍如何在 Android 端快速集成 RTMP 推流,包括权限管理、相机预览、推流控制等关键步骤。 步骤 1. 配置 Maven 仓库 在 settings.gradle.kts 中添…

蓝桥杯备赛-拔河

问题描述 小明是学校里的一名老师,他带的班级共有 nn 名同学,第 ii 名同学力量值为 aiai​。在闲暇之余,小明决定在班级里组织一场拔河比赛。 为了保证比赛的双方实力尽可能相近,需要在这 nn 名同学中挑选出两个队伍&#xff0c…

基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统

基于开源鸿蒙OpenHarmony的智能家居综合应用系统 1. 智能安防与门禁系统1) 系统概述2) 系统架构3)关键功能实现4)安全策略5)总结 2.环境智能调节系统1)场景描述2)技术实现3)总结 3.健康管理与睡眠监测1&…

核弹级技术革命——搭配deepseek-r1满血版的腾讯云ai助手(codex)仅用14天独立开发出适配ARM架构的微内核操作系统!

🚀 编程革命已至:双核AI代码引擎开启效率新纪元 🚀 当代码生成速度提升600%、缺陷率下降75%成为现实,全球开发者正在见证AI生产力的核爆时刻!DeepSeek ProMax AI 代码引擎与腾讯云CodeX双剑合璧,以实测数据…

介绍一下在自动驾驶 路径规划和 控制算法 详细一些

已思考完成 收起 嗯,用户想了解自动驾驶中的路径规划和控制算法,需要详细一些。我得先整理一下参考内容里的信息,然后有条理地呈现出来。首先,路径规划和控制算法是自动驾驶系统的核心模块,需要分别介绍它们的基本概念…