FastAPI 有两个依赖支持:

  • Starlette负责网络
  • ​ Pydantic负责数据

安装:

 安装命令

pip install fastapi

 FastAPI 还需要ASGI服务器,生产环境下可以使用Uvicorn

pip install uvicorn[standard]

​ 也可以使用以下命令安装所有依赖支持的库:

#该命令还安装了运行FastAPI应用的服务器 -uvicorn
pip install fastapi[all]

运行:

最简单的FastAPI文件所示如下:

from fastapi import FastAPI

app = FastAPI()

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

复制代码到 main.py

运行代码:

uvicorn main:app --reload

运行命令说明:

  • main:main.py 是python 模块
  • app:main.pyapp = FastAPI() 创建的对象
  • --reload:代码更新后,重启服务器,仅在开发时使用

也可以在main.py里加上这段代码,然后python main.py 运行

import uvicorn

if __name__ == '__main__':
uvicorn.run('main:app', reload=True, host='127.0.0.1', port=8000)

API文档:

通过访问 http://127.0.0.1:8000/docs 可以查看自动生成的API文档。

创建FastAPI的基本步骤

第一步:导入FastAPI

FastAPI是继承了Starlette的类

FastAPI可以调用Starlette的所有功能

第二步:创建FastAPI实例

变量app是FastAPI的类实例,该实例是创建API的主要交互对象。

第三步:创建路径操作

路径是指URL的第一个反斜杠(/)及之后的内容。

https://example.com/items/foo
/items/foo 表示路径或路由或端点

操作是指HTTP方法,常用的方法如下:

  • POST :创建数据
  • GET :读取数据
  • PUT :更新数据
  • DELETE :删除数据

@app.get("/")告诉FastAPI下方函数以如下方式处理访问请求:

  • 请求路径为 /
  • 使用 get 操作
@app   语法是python装饰器
装饰器接收到下方函数,并用它执行一些操作,
本例中,这个装饰器告诉FastAPI下方函数对应的路径是 / 和 get 操作,这就是路径操作装饰器。
第四步:定义路径操作和函数

路径操作函数由以下几部分组成:

  • 路径: /
  • 操作: get
  • 函数: 装饰器下方的函数
from fastapi import FastAPI

app = FastAPI()

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

FastAPI每次接收使用get方法访问URL /的请求时都会调用这个函数。本例中的路径操作函数是异步函数(async)

也可以不使用异步函数,例如:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
return {"message": "Hello World"}
第五步:返回内容
from fastapi import FastAPI

app = FastAPI()

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

路径操作函数可以返回字典、列表以及字符串、整数等单值。

还可以返回Pydantic模型

最新文章

  1. ELF Format 笔记(十一)—— 程序头结构
  2. ERROR 1130: Host 'XXXXXXX' is not allowed to connect to this MySQL server
  3. ECMAScript6 面向对象 时钟效果
  4. 设置core环境
  5. ASP.NET——生成验证码
  6. ASP.NET MVC 5 一 入门
  7. Repeater展示表格
  8. day3-Python集合、函数、文件操作,python包的概念
  9. 在windows下进行linux开发:利用Vagrant+virtualbox(ShowDoc与mp3dish的作者)
  10. codevs 1515 跳 贪心+lucas
  11. (二)Maven的安装与环境配置
  12. python安装画图模块pillow
  13. 关于使用echarts走过的坑(同grid多图、多轴系列)
  14. 转载 Net多线程编程—System.Threading.Tasks.Parallel
  15. hdu2588-GCD-(欧拉函数+分解因子)
  16. luogu P4108 [HEOI2015]公约数数列——solution
  17. php ci框架中载入css和js文件失败的原因及解决方法
  18. VCAP5-DCA – What’s new?
  19. 数组问题常用的O(N)算法:单调队列
  20. CentOS.56安装Redis监控工具RedisLive

热门文章

  1. 【Java并发011】原理层面:CAS操作全解析
  2. HDLBits答案——Verilog Language
  3. 【Spring系列】- Bean生命周期底层原理
  4. SQL语句查询关键字前期数据准备
  5. ArcObjects SDK开发 004 如何学习好ArcObjects SDK开发
  6. Ubuntu20.04创建快捷方式(CLion)
  7. 【Java SE】Day09 继承、super、this、抽象类
  8. TypeScript 之 Type
  9. context状态树
  10. vuex的使用详解