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

FastApi快速实践

在这里插入图片描述

文章目录

      • 一、主要功能:
      • 二、安装 FastAPI 和 Uvicorn(运行服务器)
      • 三、示例代码:
      • 四、运行服务器:
        • 1. 方式一:
        • 2. 方式二:
      • 五、访问接口
      • 六、如果需要跨域(CORS)
      • 七、总结

下面是一个使用 FastAPI 构建简单 API 的示例,包括 GETPOST 方法:

一、主要功能:

  • GET / :返回欢迎信息
  • POST /items/ :接收 JSON 数据,返回相应的响应

二、安装 FastAPI 和 Uvicorn(运行服务器)

pip install fastapi uvicorn

三、示例代码:

from fastapi import FastAPI
from pydantic import BaseModelapp = FastAPI()# 定义请求数据模型
class Item(BaseModel):name: strprice: floatdescription: str = None# GET 方法
@app.get("/")
def read_root():return {"message": "Welcome to FastAPI!"}# POST 方法,创建 item
@app.post("/items/")
def create_item(item: Item):return {"message": "Item received!", "item": item}# 运行服务器:
# 在终端运行: uvicorn filename:app --reload

四、运行服务器:

1. 方式一:

假设你的文件名为main.py,可以使用以下命令启动开发服务器:

uvicorn main:app --reload

参数说明:

  • main:app 指的是文件名(main.py)中的 app 实例

  • --reload 支持热重载,便于开发调试

2. 方式二:

假设你的文件名为main.py,在main.py中增加:

if __name__ == "__main__":# 运行 FastAPIuvicorn.run(app, host="0.0.0.0", port=XXXX)

说明:

  • xxxx替换为4个数字,就是port号
  • 直接执行 python main.py

五、访问接口

  • 主页: http://127.0.0.1:8000/
  • Swagger文档(自动生成): http://127.0.0.1:8000/docs(Swagger UI)
  • ReDoc文档(交互式API文档): http://127.0.0.1:8000/redoc

六、如果需要跨域(CORS)

当你前后端分离部署或调用第三方接口时,可能会遇到跨域问题。此时可添加如下配置。

from fastapi.middleware.cors import CORSMiddlewareapp.add_middleware(CORSMiddleware,allow_origins=["*"],allow_credentials=True,allow_methods=["*"],allow_headers=["*"],
)

app = FastAPI()后面加上即可。

七、总结

这个示例展示了 FastAPI 的基本用法,涵盖:

  • 接口定义(GET / POST)
  • 请求体校验(基于 Pydantic)
  • 自动生成交互式 API 文档
  • 跨域处理配置
  • 使用 Uvicorn 启动服务

FastAPI 支持异步编程、高性能、类型注解验证等特性,适合开发现代 Web API。如果需要实现更复杂的功能(如数据库连接、用户认证、JWT 登录、异步任务等),可以在此基础上进一步扩展。

http://www.xdnf.cn/news/279001.html

相关文章:

  • React class 的组件库与函数组件适配集成
  • C++函数总结
  • 【Java学习笔记】方法重载
  • 以太坊智能合约开发框架:Hardhat v2 核心功能从入门到基础教程
  • 深入浅出数据库管理系统
  • 工程师 - 汽车分类
  • 【AI面试准备】掌握常规的性能、自动化等测试技术,并在工作中熟练应用
  • Jenkis安装、配置及账号权限分配保姆级教程
  • 高性能 WEB 服务器 Nginx:多虚拟主机实现!
  • llfc项目TCP服务器笔记
  • Linux常用命令30——groupadd创建新的用户组
  • 状态值函数与状态-动作值函数
  • MVP架构梳理
  • Dubbo(95)如何在社交网络中应用Dubbo?
  • 注意力机制
  • 2025年PMP 学习一
  • 文章记单词 | 第60篇(六级)
  • mysql中int(1) 和 int(10) 有什么区别?
  • STM32GPIO输入实战-按键key模板及移植
  • I.MX6U的GPIO配置和LED点灯实验。
  • leetcode:最小覆盖字符串
  • 【操作系统】吸烟者问题
  • NHANES指标推荐:LC9
  • Android第四次面试总结之Java基础篇(补充)
  • 【NTN 卫星通信】NTN关键问题的一些解决方法(一)
  • 55认知干货:深空产业
  • 2022年第十三届蓝桥杯省赛B组Java题解
  • 128. 最长连续序列
  • 【人工智能】大模型安全的深度剖析:DeepSeek漏洞分析与防护实践
  • 牛客周赛91 D题(数组4.0) 题解