1、安装FastAPI

  • 安装fastapiunicorn模块,unicorn可以作为服务器
pip install fastapi -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install unicorn -i https://pypi.tuna.tsinghua.edu.cn/simple

2、启动一个最简单的例子

# filename: main.py
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
async def root():
	return {"message": "Hello, world!"}
  • 命令行中使用命令unicorn main:app --reload启动服务,命令讲解
    • main main.py文件,表示main模块
    • app main.py中创建的app对象
    • --reload 开发时使用,可以修改源码后立即生效
  • 浏览器中访问:http://127.0.0.1:8000可以查看到如下内容
    在这里插入图片描述

3、两种查看接口文档的方法

  • 查看交互式API文档:http://127.0.0.1:8000/docs
    在这里插入图片描述

  • 第二种:http://127.0.0.1:8000/redoc
    在这里插入图片描述

4、OpenAPI

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

schema

  • 是对事物的一种定义或描述
  • 不是具体的实现代码,只是抽象的描述
  • 大概是这样的
    from pydantic import BaseModel, Schema
    class Item(BaseModel):
    	name: str
    	description: str = Schema(None, title="the description of the item", max_length=30)
    	...
    	...
    

API Schema

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

Data Schema(??

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

JSON Schema

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

原始的OpenAPI Schema

  • 通过http://127.0.0.1:8000/openapi.json查看,原始的OpenAPI Schema只包含了所有的JSON数据结构的API描述
    {
    	"openapi": "3.0.2",
    	"info": {
    		"title": "FastAPI",
    		"version": "0.1.0"
    	},
    	"paths": {
    		"/": {
    			"get": {
    				"summary": "Root",
    				"operationId": "root__get",
    				"responses": {
    					"200": {
    						"description": "Successful Response",
    						"content": {
    							"application/json": {
    								"schema": {}
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    }
    

5、详解上面的那个例子

# FastAPI是一个为API提供所有功能的PYTHON类
# FastAPI直接从Starlette继承的类,可以通过FastAPI使用Starlette的功能
from fastapi import FastAPI

# app是FastAPI类的一个实例
# uvicorn启动时会用到这个app
app = FastAPI()

# 创建一个路径操作
@app.get("/")
async def root():  # 定义路径操作函数
	# return: 函数返回内容
    return {"message": "hello, world!"}

创建一个路径操作

  • 路径:指的是URL从第一个/起的后半部分,也就是常说的path,也称为端点 路由
  • 操作:就是请求方式,可以使用POST GET PUT DELETE OPTIONS HEAD PATCH TRACE 中的任意一种方式与每个路径进行通信
  • 遵循RESTFul风格的话,一般:
    • POST 创建数据
    • GET 获取数据
    • PUT 更新数据
    • DELETE 删除数据
  • 定义一个路径操作的装饰器:@app.get("/")

定义路径操作函数

  • 该函数其实就是一个普通Python函数
  • 每当FastAPI接收到一个使用GET方法访问路径/的请求时,就会调用root()函数
  • async表示异步处理函数

学习参考:https://www.cnblogs.com/poloyy/p/15265095.html

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐