Python 官方文档:入门教程 => 点击学习
一. 前言 之前在面试的时候面试官有提到过这个框架,但是个人在之前的项目中没有用到过,只是有听过,并没有实际的应用,因此,个人自己研究了一下,这是个新型的框架,使用起来相对挺简单。Fastapi是一个
之前在面试的时候面试官有提到过这个框架,但是个人在之前的项目中没有用到过,只是有听过,并没有实际的应用,因此,个人自己研究了一下,这是个新型的框架,使用起来相对挺简单。Fastapi是一个基于python的现代WEB框架,它具有快速构建高性能API的特点。
中文文档:https://fastapi.tiangolo.com/zh/
当选择一个适合你的项目的Python Web框架时,你可能会考虑以下几个方面:性能、开发难度和推广程度。在这里,我们将比较DjanGo、Flask和FastAPI这三个常用的框架,深入探讨它们的优点和缺点。
asyncio
库来实现高效的并发请求处理。FastAPI使用uvicorn作为默认的Web服务。因此,您需要在安装FastAPI之前安装uvicorn。可以使用以下命令来安装FastAPI和uvicorn:
pip install fastapipip install uvicorn
其中, uvicorn 是一个轻量级的 ASGI(异步服务器网关接口)服务器。
在Python文件中,导入FastAPI并创建一个应用程序实例:
from fastapi import FastAPIapp = FastAPI()
使用装饰器将函数绑定到特定的路径和Http方法,即路由:
from fastapi import FastAPIapp = FastAPI()@app.get("/")async def root(): return {"message": "Hello World"}
在上面的示例中,@app.get("/")
表示将root()函数绑定到HTTP GET
方法的根路径。函数返回一个字典,其中包含一个简单的 {"message": "Hello World"}
消息。
可以使用uvicorn运行FastAPI应用程序。在Python文件所在的目录下运行以下命令:
uvicorn main:app --reload
其中,main
是Python文件名,app是FastAPI
应用程序实例的名称。--reload
选项表示在修改代码时重新加载应用程序。
在浏览器中打开 http://localhost:8000/
,您应该能够看到 “Hello World”消息。可以使用Postman或其他HTTP客户端测试API的其他端点。
from fastapi import FastAPIapp = FastAPI()@app.get("/")async def root(): return {"message": "Hello World"}@app.get("/items/{item_id}")async def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}
这个应用程序有两个路由:
根路由 /,响应一个包含 {"message": "Hello World"}
的 jsON。
/items/{item_id}
,响应一个包含 {"item_id": item_id, "q": q}
的 JSON。
其中, /items/{item_id}
包含一个路径参数 item_id
和一个查询参数 q。如果不提供查询参数,则默认为 None
。
除了路径参数和查询参数外,FastAPI 还支持在路由处理程序中使用模板参数。例如,以下示例显示了如何在路由处理程序中使用模板参数:
from fastapi import FastAPIapp = FastAPI()@app.get("/users/{user_id}")async def read_user(user_id: int): return {"user_id": user_id}
在这个例子中,路由 /users/{user_id}
包含一个路径参数 user_id。当我们访问 /users/123
时,user_id 的值将被设置为 123。
FastAPI 也支持在路由处理程序中返回html模板。以下示例显示了如何在路由处理程序中返回HTML模板:
from fastapi import FastAPI, Requestfrom fastapi.templating import Jinja2Templatesapp = FastAPI()templates = Jinja2Templates(directory="templates")@app.get("/")async def read_root(request: Request): return templates.TemplateResponse("index.html", {"request": request, "username": "Johnson Doe"})
在这个例子中,我们使用了 Jinja2 Templates
模块,将模板目录设置为当前工作目录下的 templates 文件夹。
路由处理程序 read_root()
返回了一个用指定模板 index.html 渲染的页面,将 request
和 username
传递给模板。在模板中,将 username
变量显示在页面上。
FastAPI 支持从请求体中解析 JSON 数据。以下样例演示了如何解析 JSON 数据:
from fastapi import FastAPIfrom pydantic import BaseModelclass Item(BaseModel): name: str price: float is_offer: bool = Noneapp = FastAPI()@app.post("/items/")async def create_item(item: Item): return item
FastAPI 同样支持在请求体中上传文件。以下样例演示了如何上传文件:
from fastapi import FastAPI, File, UploadFileapp = FastAPI()@app.post("/uploadfile/")async def create_upload_file(file: UploadFile = File(...)): return {"filename": file.filename}
在这个示例中,路由处理程序 create_upload_file()
接收一个类型为 UploadFile
的参数 file
,将上传的文件保存在服务端。如果请求中没有提供文件,则返回一个错误信息。
my_project/├── app/ │ ├── apis/│ │ ├── __init__.py│ │ ├── auth.py│ │ ├── items.py│ │ └── users.py│ ├── core/│ │ ├── __init__.py│ │ ├── config.py│ │ ├── security.py│ │ └── sqlalchemy.py│ ├── db/│ │ ├── __init__.py│ │ └── base.py│ ├── main.py│ └── models/│ ├── __init__.py│ ├── item.py│ └── user.py├── Docker-compose.yml├── Dockerfile├── README.md└── requirements.txt
在这个示例项目中,主要包括以下几个部分:
此外,还可以根据项目需要添加其他目录和文件,例如静态文件目录、测试目录、文档目录等。但是,无论怎样组织FastAPI项目结构,都需要保证代码清晰明了、易于维护。
这只是FastAPI的基本用法。FastAPI还提供了许多其他功能,如请求体验证和文档生成,以帮助您轻松构建高性能API。有了这些基础,您可以开始在FastAPI中编写更强大和复杂的API了!
FastAPI 框架中文文档:https://fastapi.tiangolo.com/zh/
以上就是FastAPI框架的基本使用和介绍,希望对你有所帮助!
来源地址:https://blog.csdn.net/qq_43030934/article/details/131452940
--结束END--
本文标题: Python - 【FastAPI】框架配置搭建基本使用
本文链接: https://www.lsjlt.com/news/402835.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0