5 分钟上手 FastAPI:比 Flask 更快的现代 Python 框架
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 并基于标准的 Python 类型提示。
关键特性:
快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
高效编码:提高功能开发速度约 200% 至 300%。*
更少 bug:减少约 40% 的人为(开发者)导致错误。*
智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
简单:设计的易于使用和学习,阅读文档的时间更短。
简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
健壮:生产可用级别的代码。还有自动生成的交互式文档。
标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。
相关网址:
FastAPI官方中文文档:https://fastapi.tiangolo.com/zh/
FastAPI菜鸟教程:https://www.runoob.com/fastapi/fastapi-tutorial.html
Web开发常见概念
在进行FastAPI的学习前,需要搞明白web开发中的常见概念,它们构成了一个完整的 Web 应用。
请求(Request)
请求(Request)是指用户向服务器发出的请求。在 Web 开发中,请求一般是通过 HTTP 协议发出的。用人话来说,就是在浏览器中输入网址,并按下enter键后,用户就对服务器进行了一次请求。
一个请求通常由请求报文(Request Message)和请求头(Request Header)组成,请求报文中包含了请求的方法(如 GET、POST)、URL 和数据等内容,请求头中包含了关于请求的附加信息,如客户端的类型、请求的来源等。
当服务器收到请求时,会根据请求的内容进行处理,并将处理结果以响应(Response)的形式返回给用户。此时用户才可以在网页中看到相应的内容。
控制器(Controller)
控制器(Controller)用于处理用户请求并执行相应的操作。控制器会读取用户请求,并调用相应的视图或模型来处理请求。在浏览器中输入url后,浏览器提交请求到服务器中,此时服务器中的函数开始向数据库进行数据获取,该函数则是控制器。
视图(View)
视图(View) 是一种控制器(Controller)的设计模式,用于处理用户请求并将数据展示给用户。视图负责呈现数据,它会根据控制器传入的数据来渲染页面。视图通常会使用模板来渲染页面,并将渲染结果返回给控制器。
模板(Template)
模板(Template) 是一种描述如何展示数据的语言。模板可以包含文本、HTML 标记和变量,用于描述数据如何被展示。模板引擎会将模板和数据结合起来,生成实际的 HTML 页面。
模板实际上就是html,只是被动态修饰的html
静态文件
静态文件是指在网站中固定的文件,例如图像、CSS 样式表、JavaScript 脚本和字体等。这些文件通常不会改变,或者变化非常少。由于静态文件通常不需要在服务器端进行任何处理,因此可以直接返回给客户端。
路由(Routing)
是指将用户请求与视图或控制器关联起来的过程。路由器会读取用户请求的 URL,并将其映射到对应的视图或控制器。浏览器中的网址就是路由
模型(Model)
是一种设计模式,用于表示数据和业务逻辑。模型会读取和保存数据,并执行相应的业务逻辑。它是与数据库直接交互的一个设计模式
中间件(Middleware)
是一种设计模式,用于在视图和控制器之间执行额外的处理。中间件可以用来实现认证、鉴权、日志记录等功能。
对象关系映射ORM(Object Relation Mapping)
ORM 是一种将面向对象编程语言的对象与关系数据库的表之间的映射的技术。它的目的是在数据库与应用程序之间提供一种简单的、透明的映射方法,使得开发人员可以以面向对象的方式编写代码,而不必编写 SQL 语句。
安装
pip install fastapi
依赖:
pip install uvicorn
构建第一个FastAPI应用
创建一main.py
的文件夹复制以下内容
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}