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

FastAPI基础入门

第一个FastAPI

fromfastapiimportFastAPI# 创建API实例app=FastAPI()@app.get("/")asyncdefread_root():return{"message":"Hello FastAPI on PyCharm Community"}

路由

importuvicornfromfastapiimportFastAPI# 创建API实例app=FastAPI()@app.get("/")asyncdefget_hello():return"hello world"

参数简介和路径参数

importuvicornfromfastapiimportFastAPI# 创建API实例app=FastAPI()# 路径参数@app.get("/book/{id}")asyncdefget_book(id:int):return{"id":id,"title":f"这是第{id}本书"}

路径参数_Path类型注解

importuvicornfromfastapiimportFastAPI,Path# 创建API实例app=FastAPI()# 路径参数_path类型注解@app.get("/school/{id}")asyncdefget_school(id:int=Path(...,gt=0,lt=100,description="查询学校的接口")):return{"id":id,"title":f"这是第{id}个学校"}# 需求,查找书籍的作者,路径参数 name,长度范围 2 - 10@app.get("/user/{id}")asyncdefget_name(name:str=Path(...,min_length=2,max_length=10)):return{"msg":f"这是{name}的信息"}

查询参数和Query类型注解

importuvicornfromfastapiimportFastAPI,Query# 创建API实例app=FastAPI()# 查询参数和Query类型注解# http://www.baidu.com?skip=&limit=&@app.get("/news/news_list")asyncdefget_news_list(skip:int=Query(0,description="跳过的记录数",lt=100),limit:int=Query(10,description="返回的记录数")):return{"skip":skip,"limit":limit}

请求体参数

importuvicornfromfastapiimportFastAPIfrompydanticimportBaseModel# 创建API实例app=FastAPI()# 请求体参数# 注册:用户名和密码 -> strclassUser(BaseModel):username:strpassword:str@app.post("/register")asyncdefregister(user:User):returnuser

请求体参数-Field类型注解

importuvicornfromfastapiimportFastAPIfrompydanticimportBaseModel,Field# 创建API实例app=FastAPI()# 请求体参数Field类型注解# 注册:用户名和密码 -> strclassUser(BaseModel):username:str=Field("张三",min_length=2,max_length=10,description="用户名,长度要求2-10个字")password:str=Field(min_length=3,max_length=20)@app.post("/register")asyncdefregister(user:User):returnuser

响应参数-JSON格式

importuvicornfromfastapiimportFastAPI# 创建API实例app=FastAPI()# 响应格式-JSON@app.get("/response_json")asyncdefget_response_json():return{"message":"hello world"}

响应参数-HTML格式

importuvicornfromfastapiimportFastAPIfromstarlette.responsesimportHTMLResponse,FileResponse# 创建API实例app=FastAPI()# 响应格式-HTML@app.get("/response_html",response_class=HTMLResponse)asyncdefget_html():return"<h1>这是一级标题</h1>"

响应参数-文件格式

# 响应格式-文件类型importuvicornfromfastapiimportFastAPIfromstarlette.responsesimportHTMLResponse,FileResponse# 创建API实例app=FastAPI()# 返回一张图片内容@app.get("/response_file")asyncdefget_file():path="./files/1.jpeg"returnFileResponse(path)

自定义响应格式


importuvicornfromfastapiimportFastAPIfrompydanticimportBaseModel,Fieldfromstarlette.responsesimportHTMLResponse,FileResponse# 创建API实例app=FastAPI()# 需求:新闻接口 -> 响应数据格式 id、title、contentclassNews(BaseModel):id:inttitle:strcontent:str@app.post("/news/{id}",response_model=News)asyncdefget_news(id:int):return{"id":id,"title":f"这是第{id}本书","content":"这是一本好书"}

异常响应处理

importuvicornfromfastapiimportFastAPI,HTTPException# 创建API实例app=FastAPI()# 异常响应处理# 需求:按id新闻查询 -> 1 - 6@app.get("/get/exc/news/{id}")asyncdefget_exc_news(id:int):id_list=[1,2,3,4,5,6]ifidnotinid_list:raiseHTTPException(status_code=404,detail="您查找的新闻不存在")return{"id":id}
http://www.jsqmd.com/news/1144731/

相关文章:

  • 如何在Linux上实现毫秒级文件搜索:FSearch完整指南
  • 多项目采购怎么统一管?2026水利工程采购统筹与软件选型指南
  • 17-任职体系建设的10大坑,你踩了几个?(上)
  • 15个实用的代码审查工具,自动化检查
  • 分布式系统理论取舍原则分析
  • RocketMQ C++ SDK 完整实战教程|NameServer 集群、全局单例、消息重试与死信处理
  • 混沌密码理论与研究调研报告
  • 电商控价公司服务包括哪些?投诉维权怎么配合
  • 3步构建你的Limbus Company智能自动化助手:从零到实战完整指南
  • 基于 ESP32 的便携式心电信号采集与显示系统设计与实现
  • cifar10-python.tar.gz下载问题
  • Day 2:定位策略入门
  • 堡垒机 Web CLI 部署教程
  • Openclaw 微信渠道总刷屏英文 Thinking?一行 Prompt 搞定!
  • 15个实用的Markdown编辑器,写作体验
  • Java 转大模型开发:后端程序员的升级路线-2468
  • 所谓Skill,不过是包装好的Prompt
  • 支持外挂字幕的视频播放器推荐
  • RAG 2026 实战指南:从朴素检索到高性能Agentic/Graph混合架构
  • Java面向对象核心知识点总结(类与对象、构造方法、Getter/Setter、内存执行机制)
  • 【创新未发表】Matlab实现能量谷优化算法EVO-Kmean-Transformer-BiLSTM负荷预测算法研究
  • 拉普拉斯噪声机制 (ε-DP) 实战:Python 实现 3 种敏感度计算与噪声注入
  • 终极指南:如何使用wwiseutil轻松修改Wwise音频容器
  • 工业现场LED光学测试的稳定的方法
  • Moneta Markets亿汇:风控思路的维度复盘
  • 我花了一周,把一种思考方式做成了 AI Skill
  • 抽帧与截图进阶:精确抽帧、关键帧提取与批量处理
  • 知栈怎么开始用?先按这 6 步走
  • 虚拟文化体验翻译:虚拟体验场景名称的文化适配与多语呈现
  • 图解 Skill 读书笔记(三):任务拆解、功能实现与安全边界