FastApi学习-01

写在前面

FastApi是python的异步Web框架,具有和Go,NodeJs相当的性能,总而言之,很快。当然还有一些相比于其他Web框架的优势,例如支持了Swagger文档,增加Python3.6+的数据类型指示功能,基于Pydantic的数据类型校验等等。个人觉得有学一学必要,所在这写下自己的学习记录。

安装

pip install fastapi
pip install uvicorn

其中uvicorn是一个ASGI(异步网关协议接口)服务器,介于网络协议和Python应用之间的标准接口,而Flask框架使用的是WSGI(Web服务器网关协议接口)。

HelloWorld

新建一个main.py,在其中创建一个最简单的应用

from fastapi import FastAPI

app = FastAPI()  # 创建应用实例,uvicorn启动时也基于这个实例


@app.get("/")  # 定义了一个"/"根目录的路由,直接返回了一个字符串
def hello_world():
    return "Hello World"

应用的启动方式有两种,一种是通过命令行的方式启动

uvicorn main:app

另一种是在main.py内部实现应用的启动

import uvicorn

if __name__ == "__main__":
    uvicorn.run("main:app")
    '''或者使用uvicorn.run(app) 传入fastapi的实例,但是这种情况下不允许设置reload和workers参数'''

uvicorn启动参数(应用内启动)

参数说明参数类型默认值
host绑定的IP地址String127.0.0.1
port绑定的端口Integer8000
reload是否自动重启,开发阶段适用BoolFalse
reload_dir自定义重启的目录TextNone
workers工作进程数,当设置reload时,该参数不生效Integer1
log_level日志级别Textinfo
access_log是否输出访问日志BoolTrue
debugdebug模式,开启后会自动重启服务BoolFalse
proxy_headers允许X-Forward-*BoolTrue
forwarded_allow_ips以逗号分割的IP列表,来自与这些IP的代理头被新人Text127.0.0.1
root_path(可选)指定应用所在的路径TextNone
limit_concurency并发限制IntegerNone不限制
limit_max_requests到达进程前的最大连接数IntegerNone不限制
backlog积压的最大连接数Integer2048
timeout_keep_live超过多长时间自动关闭Keep-Alive连接Integer5
headers自定义响应头List形如[(a, b)]

 

获取API文档

访问绑定的127.0.0.1:8000/doc 获取SwaggerUI风格的API文档

访问绑定的127.0.0.1:8000/redoc 获取ReDoc庚哥的API文档

接口方法简介

@app.get("/")  # 定义了一个"/"根目录的路由,直接返回了一个字符串
def hello_world():
    return "Hello World"

其中app是FastApi的一个实例,在上文定义的。

get是http协议的方法,除了GET,还包括POST,PUT,DELETE等方法。一般情况下,GET用于获取数据,POST用于创建数据,PUT用于更新数据,DELETE用于删除数据。当然了,也可以根据自己的习惯,使用不同的办法。

"/"是定义的路由,当服务器进行访问时,只有匹配上该路由,才能映射到对应的接口函数。

hello_world是定义的接口函数,用于实现具体的操作。FastApi是一个异步框架,所以接口函数也可以定义成以下方式

@app.get("/")  # 定义了一个"/"根目录的路由,直接返回了一个字符串
async def hello_world():
    return "Hello World"

官方文档中对于选择def还是async def也做了一个简单的说明

1.如果使用的第三方库告诉你调用的时候用await somefunc()的方式,使用async def

2.如果使用的第三方库与数据库,API等有交互时,并且不支持await调用方式,就使用def

3.如果不与其他交互和等待其他的响应,使用async def

4.如果你什么都不知道,使用def

不管在那种情况下,FastApi都会以异步的方式来提高效率,但是根据不同的情况选择合适的方式有助于性能优化。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fastapi-mysql-generator 是一个用于快速生成FastAPI和MySQL的框架的工具。FastAPI是一个现代、快速(高性能)的web框架,而MySQL是一个流行的关系型数据库。 使用 fastapi-mysql-generator,可以从一个简单的命令行界面中生成 FastAPI 应用程序,并与 MySQL 数据库集成。这个工具可以自动创建数据库表和模型(Model),并提供一组 API 端点,用于执行常见的 CRUD(创建、读取、更新和删除)操作。 fastapi-mysql-generator 的主要优势之一是它的简单易用性。无论是初学者还是有经验的开发人员,都可以快速上手并生成一个完整的基于FastAPI和MySQL的应用程序。只需要几个简单的步骤,就可以生成项目的基本结构和代码。同时,fastapi-mysql-generator 还提供了一些配置选项,可以根据需求进行自定义设置,以满足特定的应用程序需求。 这个工具还提供了一些有用的特性,以增强开发的效率和便利性。例如,它可以自动生成 API 文档,包括请求和响应模型的文档说明。此外,fastapi-mysql-generator 还支持身份验证和授权功能,以确保 API 路由的安全性。 总而言之,fastapi-mysql-generator 是一个快速生成 FastAPI 和 MySQL 应用程序的方便工具。它简化了应用程序的开发过程,并提供了一些有用的特性,以提高开发效率和便利性。无论是初学者还是有经验的开发人员,都可以受益于这个工具的使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值