15 生成请求体与响应之使用JSON返回数据
在上一篇文章中,我们讨论了FastAPI中请求体与响应的返回格式。这篇文章将进一步探讨如何使用JSON格式返回数据,包括如何定义请求体和响应的JSON结构。接下来,我们会结合案例,演示如何在FastAPI中做到这一点。
FastAPI中的JSON响应
FastAPI使用Pydantic
模型来定义请求体和响应格式。通过这个功能,我们可以方便地生成和验证JSON数据,使我们的API更加安全和可靠。
定义Pydantic模型
首先,我们需要创建一个Pydantic模型来定义我们的请求和响应体。在本示例中,我们将设计一个简单的用户信息管理API。
1 | from fastapi import FastAPI |
在上面的代码中,我们定义了一个User
类,继承自BaseModel
。这个模型包含了我们希望在请求体和响应中传递的字段:id
、name
和email
。
创建一个接收JSON请求体的API
接下来,我们将创建一个API端点,允许用户通过POST请求发送JSON数据,并返回这些数据作为响应。
1 |
|
在这个示例中:
- 我们使用
@app.post
装饰器来定义一个POST请求的路由/users/
。 - 函数
create_user
接受一个类型为User
的参数。这将自动进行数据验证。 - 我们在
response_model
中指定响应的类型为User
,这样FastAPI会自动将返回的数据转换为JSON格式。
测试API
我们可以使用curl
或Postman来测试这个API。以下是一个使用curl
的示例:
1 | curl -X POST "http://127.0.0.1:8000/users/" -H "Content-Type: application/json" -d '{"id": 1, "name": "Alice", "email": "alice@example.com"}' |
你应该会得到相应的JSON数据:
1 | { |
生成复杂的JSON响应
FastAPI允许我们生成更复杂的JSON响应。假设我们想要返回用户的详细信息以及其创建的时间。我们可以更新模型以包含更多字段。
1 | from datetime import datetime |
现在当我们发送一个创建用户的请求时,会得到包含created_at
字段的响应。
小结
在本篇文章中,我们详细探讨了如何在FastAPI中生成请求体与响应的JSON数据。我们学习了如何:
- 使用
Pydantic
模型定义请求体和响应结构。 - 创建一个接收JSON请求的API,并返回相同的数据作为响应。
- 扩展返回的JSON以包含更多信息。
下一篇文章我们将讨论路径参数与查询参数的使用示例,敬请期待!
15 生成请求体与响应之使用JSON返回数据