fastapi之一

安装

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 os

app = 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, HTTPException

import uvicorn
import os

app = 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"}, 201


if __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 os

app = 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) + 1
    items[item_id] = item
    return {"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] = item
    return {"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 中的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trust Tomorrow

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值