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

fastapi之一

文章目录

  • 安装
  • 运行
  • HTTP 请求方法
      • 示例
    • POSTMAN 检验
      • GET
      • POST
      • PUT
      • DELETE
  • HTTP 状态码
      • 示例
      • GET
      • POST
  • 综合示例
      • POST
      • GET
      • PUT
      • DELETE
  • 总结

安装

pip install fastapi

或者

pip install fastapi -i https://mirrors.aliyun.com/pypi/simple

上面两种方法均可以,选择一个即可,然后

pip install uvicorn -i https://mirrors.aliyun.com/pypi/simple

运行

uvicorn main:app --reload

HTTP 请求方法

HTTP(Hypertext Transfer Protocol)是用于传输超媒体文档的协议。HTTP 请求方法定义了客户端和服务器之间的交互方式,常见的方法包括:

  • GET:请求获取指定资源的信息。通常用于获取数据。
  • POST:向指定资源提交数据,通常用于提交表单或上传文件。
  • PUT:向指定资源上传数据,通常用于更新资源的全部内容。
  • DELETE:请求删除指定的资源。

示例

# FastAPI 示例:处理不同的 HTTP 请求方法from fastapi import FastAPI
import uvicorn
import osapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: int):return {"item_id": item_id, "message": "GET 请求"}@app.post("/items/")
async def create_item(item: dict):return {"item": item, "message": "POST 请求"}@app.put("/items/{item_id}")
async def update_item(item_id: int, item: dict):return {"item_id": item_id, "item": item, "message": "PUT 请求"}@app.delete("/items/{item_id}")
async def delete_item(item_id: int):return {"item_id": item_id, "message": "DELETE 请求"}if __name__ == "__main__":uvicorn.run(f"{os.path.basename(__file__).split('.')[0]}:app",host="127.0.0.1",port=8000,reload=True,)

POSTMAN 检验

GET

在这里插入图片描述

POST

在这里插入图片描述

PUT

在这里插入图片描述

DELETE

在这里插入图片描述

HTTP 状态码

HTTP 状态码用于表示服务器响应的状态,每个状态码都包含一个数字代码和对应的描述信息。常见的状态码包括:

  • 200 OK:请求成功,服务器返回所请求的资源。
  • 201 Created:请求成功并且资源已被创建。
  • 400 Bad Request:客户端请求无效,服务器无法处理。
  • 401 Unauthorized:请求未经授权,需验证用户身份。
  • 404 Not Found:请求的资源不存在。
  • 500 Internal Server Error:服务器内部错误,无法完成请求。

示例

# FastAPI 示例:返回不同的 HTTP 状态码from fastapi import FastAPI, HTTPExceptionimport uvicorn
import osapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: int):if item_id == 0:raise HTTPException(status_code=404, detail="Item not found")return {"item_id": item_id, "message": "Item found"}@app.post("/items/")
async def create_item(item: dict):return {"item": item, "message": "Item created"}, 201if __name__ == "__main__":uvicorn.run(f"{os.path.basename(__file__).split('.')[0]}:app",host="127.0.0.1",port=8000,reload=True,)

GET

在这里插入图片描述
在这里插入图片描述

POST

在这里插入图片描述

综合示例

from fastapi import FastAPI, Header, HTTPException, Response
import uvicorn
import osapp = FastAPI()items = {}@app.get("/items/{item_id}")
async def read_item(item_id: int):if item_id not in items:raise HTTPException(status_code=404, detail="Item not found")return {"item_id": item_id, "item": items[item_id]}@app.post("/items/")
async def create_item(item: dict):item_id = len(items) + 1items[item_id] = itemreturn {"item_id": item_id, "item": item}, 201@app.put("/items/{item_id}")
async def update_item(item_id: int, item: dict):if item_id not in items:raise HTTPException(status_code=404, detail="Item not found")items[item_id] = itemreturn {"item_id": item_id, "item": item}@app.delete("/items/{item_id}")
async def delete_item(item_id: int):if item_id not in items:raise HTTPException(status_code=404, detail="Item not found")del items[item_id]return {"message": "Item deleted"}@app.get("/headers/")
async def get_headers(user_agent: str = Header(None)):return {"User-Agent": user_agent}@app.post("/custom-header/")
async def custom_header(response: Response, item: dict):response.headers["X-Custom-Header"] = "Custom value"return {"item": item, "message": "Item created"}if __name__ == "__main__":uvicorn.run(f"{os.path.basename(__file__).split('.')[0]}:app",host="127.0.0.1",port=8000,reload=True,)

POST

可以添加多个
在这里插入图片描述

GET

在这里插入图片描述
在这里插入图片描述

PUT

在这里插入图片描述
修改之后,在查询
在这里插入图片描述

DELETE

在这里插入图片描述
在查询
在这里插入图片描述

总结

通过以上示例,了解 HTTP 的基本概念和方法,并在 FastAPI 中实践这些知识。在实际项目中应逐步应用这些技巧,以深入理解和掌握 HTTP 协议及其在 FastAPI 中的应用。

http://www.lryc.cn/news/409845.html

相关文章:

  • 【C语言报错已解决】Format String Vulnerability
  • 关于一个简单的顺序表代码
  • 【资料分享】2024第三届钉钉杯大学生大数据挑战赛B题思路解析+双语言代码
  • Typescript学习笔记(2.0)
  • 【IJHE】:微通道反应器中全氢二苄基甲苯脱氢产氢
  • Spring踩坑:抽象类作为父类,使用子类@Autowired属性进行填充,属性值为null
  • C#网络连接:TCP/IP模式下的网络连接与同步
  • 基于树莓派(Raspberry Pi) 的智能电表监测系统设计:集成 Home Assistant、SQLite 和 MQTT 协议
  • C语言程序设计(二)
  • Oracle对数据库行和数据库的监控
  • 论文阅读:面向自动驾驶场景的多目标点云检测算法
  • Vite + Vue3 + TS项目配置前置路由守卫
  • 设计模式-备忘录
  • openEuler安装docker,加速镜像拉取
  • angular入门基础教程(七)系统路由
  • Unity Canvas动画:UI元素的动态展示
  • apache.commons.pool2 使用指南
  • 【Python面试题收录】Python编程基础练习题②(数据类型+文件操作+时间操作)
  • typescript 定义类型
  • 基于Java+SpringBoot+Vue的的课程作业管理系统
  • 分布式日志分析系统--ELK
  • Linux初学基本命令
  • 如何优化PyTorch以加快模型训练速度?
  • 用最简单的方法对大数据进行处理 vs spark(不需要安装大数据处理工具)
  • 非线性校正算法在红外测温中的应用
  • python----线程、进程、协程的区别及多线程详解
  • 将 magma example 改写成 cusolver example eqrf
  • 微信小程序教程007:数据绑定
  • Git -- git stash 暂存
  • 基于YOLO的植物病害识别系统:从训练到部署全攻略