【Python】一文带你认识 Web 框架之 FastAPI

简介: FastAPI是一个现代、快速(高性能)的Web框架,用于构建API,基于Python 3.6+,并使用了标准的Python类型注解(Python 3.5也支持类型注解),以获得交互式API文档(通过OpenAPI/Swagger)和自动验证。FastAPI是一个Web框架,它与Flask和Django等框架不同。它具有更高的性能和易用性,并提供了最新的标准和技术,例如类型注释、异步编程、请求和响应体(JSON和其他数据格式)的内置验证和文档生成等。

image.png
一、简介
FastAPI是一个现代、快速(高性能)的Web框架,用于构建API,基于Python 3.6+,并使用了标准的Python类型注解(Python 3.5也支持类型注解),以获得交互式API文档(通过OpenAPI/Swagger)和自动验证。 FastAPI是一个Web框架,它与Flask和Django等框架不同。它具有更高的性能和易用性,并提供了最新的标准和技术,例如类型注释、异步编程、请求和响应体(JSON和其他数据格式)的内置验证和文档生成等。

    FastAPI的目标是帮助构建更好的API,尽可能简单而快速,并使API更容易创建和部署。它的设计重点在于提高开发人员的生产力并保持代码清晰和易于理解。这使得FastAPI成为构建精细和高性能API的理想选择。FastAPI的强大功能使得它成为许多Python开发人员的首选框架。

二、发展史
FastAPI于2019年发布。它是由Sebastian Ramirez创建的,他曾经为12个国家的公司工作,包括伊利诺伊州大学(University of Illinois),Cloudinary,gumgum Inc等等。他还是Pydantic框架的创建者,并成为了多个开源项目的贡献者,例如拖动PDF的pdfkit和 PDFTables等。他是Python开发人员社区活跃分子和会议演讲人,并在Python开发人员社区拥有广泛的联系。

    FastAPI于2019年首次推出,其设计初衷是为了解决Python Web框架在数据类型验证和文档生成方面的问题。与Flask等传统Web框架不同,FastAPI使用了Python类型注解和Pydantic模型,并使用async/await异步语法以提高性能。 FastAPI还支持使用OpenAPI和Swagger进行文档生成,使API整个生命周期更易于管理。

    FastAPI的稳定版本1.0于2020年6月发布。

三、主要功能
FastAPI 有以下主要优势:
快速:极其快速的性能,得益于使用Pydantic、Starlette等技术。
标准:基于标准 Python 类型标注的 Python 3.6+ 代码。
少量代码:通过利用 Python 特性,使代码量最小化。
快速编写:尽可能简单和易于编写的 API 以及自动生成文件的功能。
FastAPI 为我们提供了以下主要功能:
非常快的性能
基于标题和 OAuth2,OpenID Connect 等的身份验证
集成式支持多个 SQL 和 NoSQL 数据库
多模板支持(Pydantic、Multipart Form、Form、JSON、WebSocket、Webhook、GraphQL)
参考文献,并可以自动生成 API 文档
具有 Docker 和 Kubernetes 的现成支持
适用于 JWT,Cookies 等的访问和安全性实用程序
Starlette 和 Pydantic 等代码生态系统的集成
四、参数详解
在 FastAPI 中,我们定义 API 操作的方式与标准 Python 函数相同。在快速定义标识HTTP Request方法和路由的接口时, FastAPI 提供了诸多参数来帮助我们完成不同的处理操作。

    下面是 FastAPI 中常见的参数类型:

Query:用于查询参数,它们是GET请求和POST/PUT参数串,直接在URL中的明文传输。
Path:用于路径参数。从路径参数和转换后的查询参数中提取数据。
Body:用于在请求体中传输的数据,它可以是任何类型,并使用json解析功能进行验证和转换。
Form:用于在表单中提交的数据,例如以POST方法提交的HTML表单。
File:用于上传文件数据。
Header:用于HTTP标头某些参数。(包含Content-Type)等参与逻辑运算授权。
Cookie:用于请求中的Cookie。
Depends:对于复杂操作,您需要多个方法,它们可能具有依赖项和许多其他细节。依赖项是将函数传递给参数来创建的。
五、使用步骤
想要使用 FastAPI 开发自己的 Web API,步骤如下:
确保你已经安装Python3.6及以上版本。
第1步:安装 FastAPI
使用下面的命令安装 FastAPI:


pip install fastapi

第2步:安装 uvicorn
安装 uvicorn 启动服务器:

pip install uvicorn

第3步:定义API接口
以下是 FastAPI 简单的示例代码,定义了一个接口,通过访问“/”路由,返回一个JSON串{"Hello":"World"}:


from fastapi import FastAPI

app = FastAPI()

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

第4步:运行 server
使用以下命令启动服务:


uvicorn main:app --reload

# 此处请把main改为你代码启动主文件名

到这里,咱们就可以通过访问http://127.0.0.1:8000/ping来测试API接口是否可用。
六、示例代码
首先,我们需要创建一个名为“main.py”的文件并导入 FastAPI。


from fastapi import FastAPI

# 初始化 FastAPI
app = FastAPI()

接下来,我们将定义一个可获取的路由,可以使用浏览器或者cURL访问该路由。


@app.get("/users")
async def get_users():
    return {"users": []}

现在,如果通过浏览器访问上面的URL,应该会得到一个JSON格式的响应。
最后,我们需要启动服务器并监听请求。为此,可以使用Uvicorn命令行工具。


uvicorn main:app --reload

现在API运行并监听端口8000。打开浏览器访问“http://localhost:8000/users”返回“{“users”: []}”。
七、总结
FastAPI是一款适合构建高性能、易用、易扩展的web框架,它广泛应用于Python web服务开发和微服务架构中。FastAPI具有强大的文档整合与代码完整性,追求代码简洁与易读性,具有较好的网站性能和响应速度。它还提供多种参数类型,可以有效地验证输入和请求。FastAPI还内置了Swagger UI界面,可以自动生成API文档,让API管理变得简单易用。但是FastAPI增加的代码量会在初学者中引起烦恼,因为新增的注释使得操作变得稍微有些复杂。但是对于有一定开发经验的开发者来说,这一点难度也很容易被克服,FastAPI已经成为开发Python Web应用程序和微服务的首选框架之一。
image.png

目录
相关文章
|
20天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
63 6
|
20天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
116 45
|
15天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
55 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4天前
|
缓存 API 数据库
Python哪个框架合适开发速卖通商品详情api?
在跨境电商平台速卖通的商品详情数据获取与整合中,Python 语言及其多种框架(如 Flask、Django、Tornado 和 FastAPI)提供了高效解决方案。Flask 简洁灵活,适合快速开发;Django 功能全面,适用于大型项目;Tornado 性能卓越,擅长处理高并发;FastAPI 结合类型提示和异步编程,开发体验优秀。选择合适的框架需综合考虑项目规模、性能要求和团队技术栈。
14 2
|
16天前
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP是一种流行的服务器端脚本语言,自诞生以来在Web开发领域占据重要地位。从简单的网页脚本到支持面向对象编程的现代语言,PHP经历了多次重大更新。本文探讨PHP的现代演进历程,重点介绍其在Web开发中的应用及框架创新,如Laravel、Symfony等。这些框架不仅简化了开发流程,还提高了开发效率和安全性。
23 3
|
15天前
|
前端开发 JavaScript 开发工具
从框架到现代Web开发实践
从框架到现代Web开发实践
25 1
|
19天前
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP 自发布以来一直在 Web 开发领域占据重要地位,历经多次重大更新,从简单的脚本语言进化为支持面向对象编程的现代语言。本文探讨 PHP 的演进历程,重点介绍其在 Web 开发中的应用及框架创新。自 PHP 5.3 引入命名空间后,PHP 迈向了面向对象编程时代;PHP 7 通过优化内核大幅提升性能;PHP 8 更是带来了属性、刚性类型等新特性。
24 3
|
21天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
47 4
|
5天前
|
安全 API 数据库
Python哪个框架合适开发淘宝商品详情api?
在数字化商业时代,开发淘宝商品详情API成为企业拓展业务的重要手段。Python凭借其强大的框架支持,如Flask、Django、Tornado和FastAPI,为API开发提供了多样化的选择。本文探讨了这些框架的特点、优势及应用场景,帮助开发者根据项目需求选择最合适的工具,确保API的高效、稳定与可扩展性。
15 0
|
12天前
|
安全 API 网络架构
Python中哪个框架最适合做API?
本文介绍了Python生态系统中几个流行的API框架,包括Flask、FastAPI、Django Rest Framework(DRF)、Falcon和Tornado。每个框架都有其独特的优势和适用场景。Flask轻量灵活,适合小型项目;FastAPI高性能且自动生成文档,适合需要高吞吐量的API;DRF功能强大,适合复杂应用;Falcon高性能低延迟,适合快速API开发;Tornado异步非阻塞,适合高并发场景。文章通过示例代码和优缺点分析,帮助开发者根据项目需求选择合适的框架。
39 0

热门文章

最新文章