FastAPI 中如何发送 get、post 请求?图文教程

本文介绍了如何在 FastAPI 中发送 GET 和 POST 请求,帮助你快速掌握基本操作及高级应用。首先,安装 FastAPI 和 Uvicorn,然后编写和运行一个简单的 FastAPI 应用。

用 Apifox,节省研发团队的每一分钟

FastAPI 中如何发送 get、post 请求?图文教程

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

FastAPI 这是一个非常流行且高性能的 Python 框架,本文将讲解如何在 FastAPI 中发送 GET 和 POST 请求,帮助你快速掌握基本操作及其高级应用。

 

准备工作

首先,我们需要安装 FastAPI 和 Uvicorn。打开你的命令行窗口,输入以下命令:

pip install fastapi
pip install uvicorn

如果你的系统安装的是 Python3,那么需要将pip改为pip3,否则会报错。

 

快速入门

在一个main.py 文件中,写下以下代码来创建一个基本的 FastAPI 应用:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"Hello": "World"}

然后,在命令行中运行这个应用:

uvicorn main:app --reload

打开浏览器,访问 http://127.0.0.1:8000,你应该会看到 {"Hello": "World"}

 

GET 请求简介

GET 请求用于从服务器获取数据。例如,当你访问一个网页时,你的浏览器实际上就是在发送 GET 请求。

 

POST 请求简介

POST 请求用于向服务器发送数据,比如提交一个表单。接下来,我们会详细介绍如何在 FastAPI 中处理这两种请求。

 

在 FastAPI 中处理 GET 请求

定义 GET 请求路由

我们来扩展一下我们的应用,添加一个处理 GET 请求的路由:

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

这段代码定义了一个新的路由 /items/{item_id},它接收一个路径参数 item_id 和一个可选的查询参数 q

 

发送 GET 请求

现在,我们使用 Python 的 requests 库来发送一个 GET 请求。新建一个 Python 文件(比如 test_get.py),写下以下代码:

import requests

response = requests.get("http://127.0.0.1:8000/items/1?q=somequery")
print(response.json())

运行这个文件,你会看到类似 {"item_id": 1, "q": "somequery"} 的输出。

 

在 FastAPI 中处理 POST 请求

定义 POST 请求路由

接下来,我们添加一个处理 POST 请求的路由:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

@app.post("/items/")
async def create_item(item: Item):
    return item

这里,我们定义了一个数据模型 Item,以及一个接受 Item 类型数据的 POST 路由。

 

发送 POST 请求

再新建一个 Python 文件(比如 test_post.py),写下以下代码:

import requests

item_data = {
    "name": "Foo",
    "description": "A very nice Item",
    "price": 35.4,
    "tax": 3.2
}

response = requests.post("http://127.0.0.1:8000/items/", json=item_data)
print(response.json())

运行这个文件,你会看到你发送的数据被返回了回来。

 

处理请求和响应的高级功能

路径参数和查询参数你可以更复杂地处理参数,比如组合路径参数和查询参数,甚至是多级路径。


请求体和响应模型你可以自定义响应模型,改变返回的状态码和头信息,甚至可以添加更多的验证和处理逻辑。

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

@app.post("/items/", response_model=Item, status_code=201)
async def create_item(item: Item):
    return item


验证和处理错误处理客户端和服务器的错误也是 FastAPI 的强项。你可以定义自定义的错误处理函数,并返回友好的错误信息。

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    if item_id > 10:
        raise HTTPException(status_code=404, detail="Item not found")
    return {"item_id": item_id}

 

完整示例

我们把所有内容综合起来,创建一个完整的示例:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

@app.post("/items/")
async def create_item(item: Item):
    return item

通过这个示例,你可以处理 GET 和 POST 请求,分别获取数据和提交数据。

 

使用 Apifox 测试和调试

Apifox 是一个集 API 文档、调试、Mock 和自动化测试于一体的工具,它可以帮助我们更加方便地调试和测试接口,还可以根据接口快速生成业务代码

 

使用 Apifox 发送 GET 请求

打开 Apifox,创建一个新的 HTTP 项目,新建一个请求,并选择 GET 方法,输入请求 URL,例如 http://127.0.0.1:8000/items/1?q=somequery。来到运行页,点击“发送”按钮,查看返回结果。

FastAPI 中发送 get  请求

 

使用 Apifox 发送 POST 请求

打开 Apifox,创建一个新的 HTTP 项目,新建一个请求,并选择 POST 方法,输入请求 URL,例如 http://127.0.0.1:8000/items/,在请求体中选择 JSON 格式,并输入以下内容:

{
    "name": "Foo",
    "description": "A very nice Item",
    "price": 35.4,
    "tax": 3.2
}

点击发送按钮,查看返回结果。

FastAPI 中发送post 请求

生成业务代码

Apifox 可以自动生成请求代码,包括生成 Python、JAVA、Axios  等代码。接口发送请求后,在下方的“实际请求”中,可以根据你的业务需求选择生成相应语言的代码。

FastAPI 中发送 get、post 请求


除此之外,还可以在“文档”页面,点击右上角的 "生成代码" 按钮,你可以在此生成接口请求代码,也可以生成实际的业务代码。

FastAPI 中发送 get、post 请求


比如我要生成一个 Python 的接口请求代码,其示例生成的代码如下图所示:

FastAPI 中发送 get、post 请求


是不是非常 nice,利用 Apifox 能大大提升开发效率,快去试试吧!

 

总结

本文介绍了如何在 FastAPI 中发送 GET 和 POST 请求,帮助你快速掌握基本操作及高级应用。首先,安装 FastAPI 和 Uvicorn,然后编写和运行一个简单的 FastAPI 应用。详细介绍了处理 GET 和 POST 请求的代码示例,并演示了使用 Apifox 进行测试和调试,提高开发效率。通过这些内容,可以学会处理参数、请求体和响应模型,以及错误处理等高级功能。

Apifox