当前位置: 首页 > news >正文

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

这篇简洁实用的文章向您展示了如何在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 PlainTextResponse

app = 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.py

from fastapi import FastAPI
from fastapi.responses import JSONResponse, FileResponse

app = 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 project
    file_path = f"./{filename}"

    return FileResponse(filename)

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

相关文章:

  • 回溯算法(C/C++)
  • 萌新学 Python 之模块管理
  • cursor设备ID修改器 支持0.45.x版本
  • Qt Creator + CMake 构建教程
  • 述职报告中,如何平衡展现个人贡献与团队协作的重要性?
  • Python 函数式编程-偏函数
  • uniapp 本地数据库多端适配实例(根据运行环境自动选择适配器)
  • 支持自动化数据回放
  • DeepSeek+谷云科技智能体,快速构建企业知识问答
  • 203、【数组】NLP分词实现(Python)
  • 自学Java-JavaSE基础加强(异常,泛型,集合框架)
  • 传递指针给函数的用法
  • 记录一下在k3s快速创建gitlab
  • 【江科协-STM32】5. 输出比较
  • Deepseek 开源周第一天:FlashMLA
  • 【C++】unordered系列容器的模拟实现
  • 结构型模式---外观模式
  • Vscode编辑器:解读文件结构、插件的导入导出、常用快捷键配置技巧及其常见问题的解决方案
  • 冒泡排序(Bubble Sort)详细教程:Java实现与优化
  • 25中医研究生复试面试问题汇总 中医专业知识问题很全! 中医试全流程攻略 中医考研复试调剂真题汇总
  • 融创中国:今年前4个月销售额约112亿元
  • 巴国家安全委员会授权军方自主决定对印反击措施
  • “半世纪来对无争议边界最深入袭击”:印巴冲突何以至此又如何收场?
  • 个人住房公积金贷款利率下调,100万元30年期贷款总利息将减少近5万元
  • 市场监管总局发布《城镇房屋租赁合同(示范文本)》
  • 十大券商看后市|A股风险偏好有回升空间,把握做多窗口