文章目录
- 安装
- 运行
- 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 中的应用。