FastAPI系列01:FastAPI快速入门


1、FastAPI简介

FastAPI 是一个基于 Python 的现代化 Web 框架,它主要用于构建Restful的Web API应用。虽然Python领域已经有了Django、Flask这样强大的Web框架,但FastAPI更年轻、更快、也更加简单。

对于一些中小型项目,或者仅仅只是为自己开发的AI应用、大数据处理应用提供一下api接口,那么FastAPI凭借其优异的性能、异步高并发处理能力、自动化的API文档生成等特性,应该可以成为你完美的选择。

FastAPI与Django、Flask

FastAPI与Django、Flask都是Python领域优秀的Web框架,它们各有自己的关注领域,下表列出它们之间的一些区别和应用场景,以供参考:

特性FastAPIDjangoFlask
性能基于 Starlette 和 Pydantic,异步支持优秀支持异步但性能不如 FastAPI轻量级,但同步为主
开发效率自动生成 API 文档,减少重复代码内置 ORM、Admin 管理后台,高效开发灵活但依赖插件
类型安全完整的类型提示和数据校验使用表单和模型校验,类型提示较弱靠开发者自行处理
异步支持原生支持 async/await,性能极佳支持异步视图,但实现较复杂异步支持较弱,需依赖扩展
API文档生成自动生成 Swagger 和 ReDoc 文档需手动编写 API 文档使用插件生成 API 文档
学习曲线语法简洁,基于类型注解易于上手全栈框架,功能全面,学习成本较高极简,适合初学者
生态系统依赖于第三方库,生态逐渐丰富完整生态,包括 ORM、Admin、认证等插件丰富,自由组合
使用场景API、AI 服务、微服务架构、数据处理全栈 Web 应用、大型项目原型开发、小型应用、REST API

2、FastAPI的安装

FastAPI的核心组成

Uvicorn — ASGI(Asynchronous Server Gateway Interface)服务器
Uvicorn支持现代协议,包括 HTTP/2 和 WebSocket,支持 async 和 await,在处理 I/O 密集型任务时表现优异,使用 uvloop 和 httptools 提供了极高的性能。

Starlette —负责 web 部分
FastAPI 是基于 Starlette 构建的,它使用 Starlette 提供的核心功能。它特别适合用于构建 API、WebSocket 服务和微服务。

Pydantic —负责数据部分
Pydantic 是一个强大的数据验证和解析库,通过类型提示简化了数据处理。它广泛用于 FastAPI 等现代 Python 框架中,用于数据校验、JSON 解析、配置管理等场景。

FastAPI的安装

安装FastAPI

pip install fastapi

安装Uvicorn

pip install "uvicorn[standard]"

3、FastAPI CLI脚手架

FastAPI CLI 是一个命令行程序,你可以用它来部署和运行你的 FastAPI 应用程序,管理你的 FastAPI 项目。完成FastAPI的安装即可在终端中使用FastAPI CLI提供的 fastapi 命令。

fastapi dev
以开发模式运行fastapi应用,此时当你更改代码时,它会自动重新加载服务器。

fastapi run
以生产环境模式运行fastapi应用,此时自动重载是禁用的。

4、第一个WebAPI程序

创建:创建一个 main.py 文件并写入以下内容

from fastapi import FastAPI

app = FastAPI()

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

@app.get("/book_list/{category}")
def book_list(category: str,size:int = 3):
	books = [
	{'title':'python handbook','category':'tech'},
	{'title':'c/c++ handbook','category':'tech'},
	{'title':'java handbook','category':'tech'},
	{'title':'coffee cookbook','category':'food'},
	{'title':'cake cookbook','category':'food'}
	]
    return {"book_list": list(filter(lambda book: book['category'] == 'tech', books))[:size], "size": size}

运行:通过以下命令运行服务器

uvicorn main:app --reload

测试:在浏览器中打开http://127.0.0.1:8000/docs
可以看到如下API文档,填写适当的参数便可进行测试。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值