您的位置:首页 > 财经 > 产业 > fastapi之一

fastapi之一

2024/12/23 6:16:04 来源:https://blog.csdn.net/liudadaxuexi/article/details/140793499  浏览:    关键词: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 中的应用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com