![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python FastAPI
文章平均质量分 75
Janeb1018
致力于推广PostgreSQL数据库及Python语言在国内的应用;同时,分享Delphi应用程序设计,让年轻一代的程序员了解并应用Delphi进行软件开发。
展开
-
28.FastAPI微服务应用示例
28.FastAPI微服务应用示例在本节内容中,我们以FastAPI框架为基础,开发一个简单的微服务应用,该应用由两部分微服务组成,作为示例,不考虑真实业务系统使用数据库来进行数据保存。总体规划如下:微服务 说明 API 功能描述 认证微服务 负责系统用户的认证鉴权 /oth_api/login 实现用户登录功能并颁发令牌 业务微服务 模拟实现简单的业务系统功能 /business_api/user/mine 获取用户信息原创 2022-02-09 22:39:13 · 2139 阅读 · 3 评论 -
27.FastAPI应用生产环境部署
27.FastAPI应用生产环境部署当基于FastAPI的应用程序或者微服务代码编写完成后,可以部署到生产环境下运行。我们在开发、调试过程中采用命令行启动用的是 uvicorn ,在生产环境下,应该使用进程管理器 gunicorn。 Gunicorn 是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server,和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。1.安装Gunicornpip install gunicorn查看帮助gun原创 2022-02-09 10:43:32 · 8788 阅读 · 1 评论 -
26.FastAPI安全性
26.FastAPI安全性软件开发中,安全是永恒的话题,FastAPI作为一个优秀的Python Web开发框架,为用户提供了多种工具,帮助用户以标准的方式轻松快速地解决软件开发中的安全性。FastAPI 的 fastapi.security 模块中为各种安全方案提供了一些工具,这些工具简化了这些安全机制的使用方法。26.1 OAuth2PasswordBearerFastAPI提供的OAuth2PasswordBearer是使用 OAuth2的密码授权模式的Bearer Token(不记名原创 2022-02-08 21:52:35 · 1313 阅读 · 0 评论 -
25.FastAPI日志处理
25.FastAPI日志处理在软件开发过程中,日志处理是经常使用的,在FastAPI中,可以直接使用python的日志处理logging,但配置相对比较麻烦一点,推荐使用开源日志扩展库loguru。25.1安装logurupip install loguru相关文档: Table of contents — loguru documentation25.2集成到FastAPI在FastAPI项目下新建包common,在common包中新建logger.py,其内容如下:# c原创 2022-02-07 17:50:25 · 3564 阅读 · 0 评论 -
24.FastAPI静态文件
24.FastAPI静态文件在FastAPI中,如果需要使用静态文件, 可以使用StaticFiles,将它挂载到应用程序中。挂载StaticFiles的方法: app.mount("/static", StaticFiles(directory="static"), name="static") 其中参数: "/static" 是指这个“子应用程序”将被“安装”到的子路径。因此,任何以"/static"开头的路径都将由它处理。 StaticFiles(directory.原创 2022-02-07 17:03:01 · 4313 阅读 · 0 评论 -
23.FastAPI后台任务
23.FastAPI后台任务在应用开发中,偶尔会有这样的需求:当一个请求结束后,程序需要执行一些较慢的数据处理,比如:发送邮件、大的数据量的统计汇总等操作。在FastAPI中,提供了后台任务来处理响应后的任务。FastAPI后台任务的创建包括任务函数的创建,声明后台任务及添加后台任务。23.1创建任务函数任务函数是一个可以接收参数的标准函数, 可以是一个async def或正常的def函数。如:async def write_log(msg:str): with open(file..原创 2022-02-07 15:50:27 · 1961 阅读 · 0 评论 -
22.FastAPI开发大型应用
22.FastAPI开发大型应用在前面的代码示例中,我们都是在一个文件创建路由;在实际开发中,一般会根据需求进行模块划分,代码项目中也会根据模块进行开发,不同的模块采用不同的文件来编写程序。在FastAPI中提供了APIRouter来组织路由, 相当于Flask中的 Blueprints。22.1 使用APIRouter创建路由1.导入 APIRouter from fastapi import APIRouter 2.使用 APIRouter 定义路由操作 router = A原创 2022-02-07 14:31:32 · 3790 阅读 · 0 评论 -
21.FastAPI关系型数据处理
21.FastAPI关系型数据处理在FastAPI应用程序开发中,不可避免要使用关系型数据库,FastAPI本身并不要求使用关系型数据库。但在开发中可以根据自己的需求使用任何关系型数据库。这里,我们以PostgreSQL数据库及SQLAlchemy为例来说明在FastAPI应用程序开发中使用数据库的方法。在本例中,实现一个通讯录的管理和维护,包括通讯录的增删改查操作。该例不使用ORM来实现,以原生SQL +SQLALchemy的方式来实现,SQLALchemy只用于执行SQL语句,不使用其ORM的方原创 2022-02-04 12:32:06 · 1397 阅读 · 0 评论 -
20.FastAPI跨域资源共享
20.FastAPI跨域资源共享跨域资源共享(CORS)是指浏览器中运行的前端拥有与后端通信的 JavaScript 代码,而后端处于与前端不同的源的情况。 源是协议(http,https)、域(myapp.com,localhost,localhost.tiangolo.com)以及端口(80、443、8080)的组合。 因此,http://localhost https://localhost http://localhost:8080 是不同的源。在FastAPI中,使用CORSMiddlew原创 2022-02-02 13:21:51 · 1754 阅读 · 0 评论 -
19.FastAPI中间件
19.FastAPI中间件在FastAPI中,可以通过中间件在每个请求被特定的路径操作处理之前,以及在每个响应返回之前进行处理。FastAPI中间件是一个函数,其作用为: 接收应用程序的每一个请求 可以对请求做一些事情或者执行任何需要的代码 将请求传递给应用程序的其他部分 (通过某种路径操作) 获取应用程序生产的响应 (通过某种路径操作) 对该响应进行处理或者执行任何需要的代码 返回响应 19.1定义中间件可以使用装饰器 @app.midd原创 2022-02-01 20:24:48 · 3678 阅读 · 0 评论 -
18.FastAPI错误处理
18.FastAPI错误处理18.1 HTTPException当我们需要在FastAPI中返回错误时,可以使用HTTPException返回错误信息。HTTPException是包含了与API相关数据的Python异常,所以在程序需要raise,而不是return。 HTTPException的参数包括: status_code 状态码 detail 详细信息,可以使用能够转换为JSON格式的任何数据类型,不止于str headers 自定义响应头 代码示例:# c原创 2022-02-01 20:23:44 · 2183 阅读 · 0 评论 -
17.FastAPI 表单数据
17.FastAPI 表单数据如果接收的数据不是JSON格式,而是表单字段,则需要使用Form。在FastAPI中,要使用Form,需要事先安装python-multipart,执行如下命令:pip install python-multipart Form参数与Path、Query、Body一样,从fastapi导入。其使用方法相同。17.1使用Form参数from fastapi import FastAPIfrom fastapi import Formapp =原创 2022-01-28 17:58:30 · 1784 阅读 · 0 评论 -
16.FastAPI session
16.FastAPI session在FastAPI中,要使用session,实际上是使用Starlette Session,Starlette Session是作为一个中间件存在的,所以需要安装Starlette Session。执行命令:pip install starlette-session 16.1使用Redis作为session存储代码如下:from fastapi import FastAPIfrom redis import Redisfrom starlette原创 2022-01-18 15:32:16 · 6393 阅读 · 0 评论 -
15.FastAPI Cookies
15.FastAPI Cookies15.1通过Cookie参数获取数据在FastAPI中,Cookie可以像Path、Query一样声明参数类型,使用方法也是一样的。代码如下:from fastapi import FastAPIfrom fastapi import Cookieapp = FastAPI()@app.get(path='/test')async def hello(uid: str = Cookie(None)): print(uid) r...原创 2022-01-18 15:31:19 · 485 阅读 · 1 评论 -
14.FastAPI响应头
14.FastAPI响应头14.1通过Response参数设置可以通过Response参数的headers来设置标头。代码如下:from fastapi import FastAPIfrom fastapi import Responseapp = FastAPI()@app.get(path='/test')async def hello(response: Response): response.headers['X-Cat-Dog'] = 'world' ...原创 2022-01-18 15:30:21 · 1899 阅读 · 0 评论 -
13.FastAPI Response对象
13.FastAPI Response对象在某些情况下,可能会需要对请求返回特定的数据,而不是采用默认的方式,此时,就可以直接使用Response对象。在FastAPI中,可以在路由操作函数声明一个fastapi.Response类型的参数,然后在函数的代码直接操作Response对象。13.1更改响应状态码可以在路由操作函数中,通过对Response对象的 status_code 赋值来修改响应状态码,代码如下:from fastapi import FastAPIfrom fasta原创 2022-01-18 15:28:43 · 2859 阅读 · 0 评论 -
12.FastAPI响应状态码
12.FastAPI响应状态码在FastAPI中,允许自行定义返回的响应状态码,可以通过在路由操作中声明 status_code 的参数值来返回状态码。 status_code 是装饰器方法参数,不属于路由操作参数, status_code 接受一个表示HTTP状态码的数值,也可以接受一个 IntEnum 类型 ,可以使用python的 http.HTTPStatus,具体可打开链接:http — HTTP modules — Python 3.10.2 documentation12.1HTTP状原创 2022-01-18 15:27:16 · 1882 阅读 · 0 评论 -
11.FastAPI模型与字典
11.FastAPI模型与字典11.1Pydantic 的 .dict()Pydantic 模型的 .dict()方法返回一个拥有模型数据的 dict。 代码如下:from fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Language(BaseModel): id: str name: str year: int rank: int@app....原创 2022-01-14 16:50:22 · 1449 阅读 · 0 评论 -
10.FastAPI响应体
10.FastAPI响应体FastAPI支持声明响应体模型进行响应数据的处理。 可以在任意路由操作中使用 response_model 参数来声明用于响应的模型: @app.get() @app.post() @app.put() @app.delete() 等等。 response_model是装饰器方法(get,post 等)的一个参数,而不是路由操作函数的参数;其类型与 Pydantic 模型属性所声明的类型相同,因此它可以是一个 Pydantic原创 2022-01-14 16:06:40 · 776 阅读 · 0 评论 -
9.FastAPI Request对象
9.FastAPI Request对象在实际开发过程中,有些时候我们需要通过Request对象直接获取一些信息,如:我们希望获取客户端的IP等信息,此时我们在路由操作函数中直接定义类型为Request的对象参数,就可以在代码中使用Request对象进行数据的获取。假设在路由函数中定义了request:Request,那么该对象可以获取到哪些信息呢?操作 说明 request.client.host 客户端连接的 host request.client.port 客户端连原创 2022-01-13 16:11:08 · 3890 阅读 · 1 评论 -
8.FastAPI Header参数
8.FastAPI Header参数在FastAPI中,使用fastapi模块的Header来声明Header参数。与 Path, Query 和Body一样,第一个参数是默认值,也可以设置注释和校验。由于大部分标准的headers用 "连字符" 也就是 "减号" (-)分隔,所以在默认情况下, Header 会把参数名称的字符从下划线 (_) 转换为连字符 (-) 来提取并记录 headers。同时,HTTP headers 是大小写不敏感的,所以可以使用标准Python样式(也称为 "snake原创 2022-01-13 16:10:15 · 1303 阅读 · 0 评论 -
7.FastAPI嵌套请求体
FastAPI嵌套请求体原创 2022-01-12 20:51:05 · 888 阅读 · 0 评论 -
6.FastAPI参数数据类型
FastAPI参数数据类型原创 2022-01-12 16:29:34 · 1225 阅读 · 0 评论 -
5.FastAPI显式声明参数
5.FastAPI显式声明参数FastAPI允许显式声明参数属于查询参数、路径参数或者请求体;同时还可以为参数声明默认值、额外的信息及校验;也允许显式声明可选参数;5.1可选参数可选参数的显式声明使用 typing. Optional来声明;代码如下:# coding: utf-8from typing import Optionalfrom fastapi import FastAPIapp = FastAPI()@app.get(path='/add/{vara}/原创 2022-01-12 15:28:28 · 1016 阅读 · 0 评论 -
4.FastAPI请求体
4.FastAPI请求体4.1请求体(Request Body)请求体是客户端发送到API的数据。响应体时API返回给客户端的数据。在FastAPI中,定义请求体需要使用pydantic模型;不能通过get请求发送请求体。发送请求体的方法: post put delete patch 4.2创建数据模型4.2.1定义模型 需要使用pydantic中的BaseModel类 声明自己的数据模型为一个继承BaseModel的类 代原创 2022-01-10 17:16:35 · 927 阅读 · 0 评论 -
3.FastAPI参数
Fast API 路径参数(Path Parameter)与查询参数(Query Parameter)原创 2022-01-10 10:08:09 · 1032 阅读 · 0 评论 -
2.API文档(FastAPI)
FastAPI文档形式:交互式API文档、备用API文档2.1交互式API文档在浏览器中请求 http://127.0.0.1:8000/docs ,显示交互式API文档, 自动交互式 API 文档(由 Swagger UI 提供) ,如图:此时可以单击某个具体的API,然后单击Try it out,然后填写参数,并单击Execute按钮来执行。2.2备用API文档在浏览器中请求 http://127.0.0.1:8000/redoc ,显示备用API文档, 备用的自动交互.原创 2022-01-08 15:40:27 · 4313 阅读 · 0 评论 -
1.FastAPI简介
1.1FastAPI是什么?FastAPI是一个现代的,快速(高性能)python web框架。基于标准的python类型提示,使用python3.6+构建API的Web框架。FastAPI的主要特点如下: 快速:非常高的性能,与NodeJS和Go相当(这个要感谢Starlette和Pydantic),是最快的Python框架之一。 快速编码:将开发速度提高约200%到300%。 更少的bug:减少大约40%的开发人员人为引起的错误。 直观:强大的编辑器支持,调试原创 2022-01-08 10:49:45 · 1298 阅读 · 0 评论