关于FastAPI框架的面试题及答案解析

发布于:2025-03-22 ⋅ 阅读:(48) ⋅ 点赞:(0)

在这里插入图片描述

在这里插入图片描述

FastAPl是一个现代、快速(高性能)的Web框架,用于构建API,基于Python3.7+的类型提示功能。它由Python开发者SebastianRamirez创建,并且使用了Starlette作为其核心组件以及Pydantic进行数据验证。


基础篇

1. FastAPI的核心优势是什么?

答案 :自动生成API文档(Swagger/ReDoc)、高性能(基于Starlette和Pydantic)、异步支持、数据验证和序列化。

2. 如何定义一个GET请求路由?

答案:使用装饰器@app.get("/路径"),例如:

@app.get("/items")
def read_items():
    return [{
   "name": "Item1"}]

3. 路径参数和查询参数有什么区别?

答案:路径参数是URL的一部分(如/items/1),用{ }定义;查询参数是URL后的键值对(如?name=foo),通过函数参数接收。

4. Pydantic模型的作用是什么?

答案:验证请求数据(如请求体、查询参数),自动生成文档,并提供数据序列化。

5. 如何返回JSON响应?

答案:直接返回Python字典或Pydantic模型,FastAPI会自动转换为JSON。


进阶篇

6. 依赖注入(Dependency Injection)有什么用?

答案:复用代码逻辑(如数据库连接、权限验证),通过Depends()注入到路由函数中。

7. 如何实现文件上传?

答案:使用FileUploadFile

from fastapi import File, UploadFile
@app.post("/upload")
def upload(file: UploadFile = File(