FastAPI(2)- 快速入门

简介: FastAPI(2)- 快速入门

安装 FastAPI


pip install fastapi


# 将来需要将应用程序部署到生产环境可以安装 uvicorn 作为服务器

pip install uvicorn

 

最简单的代码栗子


from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
    return {"message": "Hello World"}


运行 uvicorn 命令,启动服务器

进到 py 文件所属目录的命令行

uvicorn main:app --reload  

  • main:main.py 文件(一个 Python「模块」)
  • app:在 main.py 文件中通过 app = FastAPI()创建的对象
  • --reload:让服务器在更新代码后自动重新启动,仅在开发时使用该选项


image.png


我这里截图的名字换了哈

 

浏览器访问

http://127.0.0.1:8000 

image.png


查看交互式 API 文档

http://127.0.0.1:8000/docs

image.png


查看可选的 API 文档

http://127.0.0.1:8000/redoc 

image.png


OpenAPI

FastAPi 使用 API 的 OpenAPI 标准为所有 API 生成 schema

 

schema

  • 是对事物的一种定义或描述
  • 它并非具体的实现代码,而只是抽象的描述
  • 后面会详说

 

API Schema

  • OpenAPI 是一种规定如何定义 API Schema 的规范
  • 定义的 OpenAPI Schema 将包括 API 路径,以及它们可能使用的参数等等
  • 比如:这个 API 的作用是什么,需要必传哪些参数,请求方法是什么

 

Data Schema

  • 指的是某些数据比如 JSON 的结构
  • 它可以表示 JSON 的属性及其具有的数据类型
  • 比如:某个属性的数据类型是什么,有没有默认值,是不是必填,作用是什么

 

JSON Schema

  • OpenAPI 会为 API 定义 API Schema,一般会包括 API 发送和接收的数据的定义,比如:发送的数据的类型、是否必填
  • 这些定义会以 JSON数据格式展示出来,所以都会称为 JSON Schema

 

查看 openapi.json


原始的 OpenAPI Schema,其实它只是一个自动生成的包含了所有 API 描述的 JSON 数据结构

http://127.0.0.1:8000/openapi.json 

image.png


拆分代码详解


from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
    return {"message": "Hello World"}


将上面最简单的栗子代码进行拆开详解

 

第一步:导入 FastAPI

from fastapi import FastAPI

  • FastAPI 是一个为 API 提供了所有功能的 Python ,必写就对了
  • FastAPI 是直接从 Starlette继承的类,可以通过 FastAPI 使用所有的 Starlette 的功能

 

第二步:创建一个 FastAPI 实例

app = FastAPI()

  • app 就是 FastAPI 类的一个实例对象
  • 重点:app 将是创建所有 API 的主要交互对象
  • 要点:uvicorn 执行命令时也会用到 app

uvicorn main:app --reload

 

app 变量名换一下呢?

from fastapi import FastAPI
my_awesome_api = FastAPI()
@my_awesome_api.get("/")
async def root():
    return {"message": "Hello World"}


那么用 uvicorn 运行命令时也需要换

uvicorn main:my_awesome_api --reload

 

第三步:创建一个路径操作

路径

  • 指的是 URL 中从第一个 / 起的后半部分,即常说的 path
  • 比如:https://example.com/items/foo 的路径就是/items/foo
  • 路径也称为:端点、路由

 

操作

就是 HTTP 请求方法

  • POST
  • GET
  • PUT
  • DELETE
  • OPTIONS
  • HEAD
  • PATCH
  • TRACE

在 HTTP 协议中,可以使用以上的其中一种(或多种)「方法」与每个路径进行通信

 

遵守 RESTFul 风格的话

通常使用:

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

 

定义一个路径操作装饰器

@app.get("/")

 

有两点含义

  • 请求路径为 /
  • 使用 get 请求

 

其他请求方法的装饰器

  • @app.post()
  • @app.put()
  • @app.delete()
  • @app.options()
  • @app.head()
  • @app.patch()
  • @app.trace()

 

第四步:定义路径操作函数

async def root():

  • 这就是一个普通的 Python 函数
  • 每当 FastAPI 接收一个使用 GET 方法访问路径为  / 的请求时这个函数会被调用
  • 在这个例子中,它是一个 async 函数(异步处理函数,后面会细说)

# 也可以不加 async,就是个常规函数

def root():

 

第五步:函数返回内容

return {"message": "Hello World"}

  • 可以返回一个 dict、list,也可以是 str、int 单个值
  • 还可以返回 Pydantic 模型(后面详解)
  • 还可以是其他会自动转换为 JSON 的对象和模型(包括 ORM 对象等)

 

FastAPI 入门总结


编写一个最简单的 FastAPI 应用程序五部曲

  1. 导入 FastAPI
  2. 创建一个 app 实例
  3. 编写一个路径操作装饰器,如 @app.get("/")
  4. 编写一个路径操作函数,如  def root(): ...
  5. 运行开发服务器,如  uvicorn main:app --reload

 


相关文章
|
机器学习/深度学习 自然语言处理 达摩院
Modelscope 工程介绍及实战演示| 学习笔记
快速学习 Modelscope 工程介绍及实战演示
2034 0
Modelscope 工程介绍及实战演示| 学习笔记
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
LangChain安装和入门案例
LangChain安装和入门案例
|
7月前
|
XML 数据格式 Python
Python Django 模版全解与实战
Python Django 模版全解与实战
99 1
Python Django 模版全解与实战
|
11月前
|
存储 中间件 Python
Scrapy框架快速入门
Scrapy框架快速入门
|
11月前
|
安全 搜索推荐 API
利用API文档开发与学习【零基础Python教程002】
利用API文档开发与学习【零基础Python教程002】
|
12月前
|
人工智能 前端开发 JavaScript
Gradio快速入门
上一次分享中,我们创建了一个对话机器人,但是只能通过终端的方式进行交互。今天介绍一个 Python 库,可以快速搭建一套 UI 界面,不需要去学习 JavaScript、TypeScript 以及相关的前端技术了。并且,Gradio 渲染出来的界面可以直接在 Jupyter Notebook 里面显示出来,适合场景相对简单,想要快速部署应用的开发者快速体验产品效果。 如果你已经在 AI 领域深入多年,可以略过哈。
|
Python
Python全栈:flask快速入门
Python全栈:flask快速入门
111 0
Python全栈:flask快速入门
|
JSON API 数据库
Python利用Django 构建Rest Api: 快速入门教程
Python利用Django 构建Rest Api: 快速入门教程
910 0
Python利用Django 构建Rest Api: 快速入门教程
|
JSON 数据库 数据格式
FastAPI(46)- JSONResponse
FastAPI(46)- JSONResponse
293 0
FastAPI(46)- JSONResponse
|
JSON JavaScript API
FastAPI(1)- 简单介绍
FastAPI(1)- 简单介绍
271 0