fastApi基础

1、fastApi简介

fastApi基础_第1张图片
官方文档:https://fastapi.tiangolo.com/
源码: https://github.com/tiangolo/fastapi

fastApi基础_第2张图片

2、环境准备

安装python
安装pycharm
安装fastAPI
安装 uvicorn

fastApi基础_第3张图片
查看已经安装的第三方库:pip list
查看pip 配置信息:pip config list

3、使用虚拟环境

fastApi基础_第4张图片
fastApi基础_第5张图片

3.1方式一 venv

首先为虚拟环境创建一个文件夹,用于存放虚拟环境,命令窗口切换的虚拟环境存放的路径下执行以下命令
python -m venv myenv

fastApi基础_第6张图片
fastApi基础_第7张图片
fastApi基础_第8张图片
fastApi基础_第9张图片
结束虚拟环境:deactivate
fastApi基础_第10张图片

3.2使用virtualenvwrapper-win

fastApi基础_第11张图片
安装:pip install virtualenvwrapper-win

创建虚拟环境:mkvirtualenv myenv2
fastApi基础_第12张图片

3.3多版本共存

fastApi基础_第13张图片
电脑上同时安装多个版本
在安装第二个版本的时候,没有自动设置环境变量。
将第二个版本的安装路径添加到环境变量中
fastApi基础_第14张图片
在相应版本根路径下的python.exe拷贝一个副本,并根据版本号重新命名python3.exe。这样在cmd中直接使用python3就可以调用python3.10版本了
fastApi基础_第15张图片

4、pycharm环境使用问题

fastApi基础_第16张图片
fastApi基础_第17张图片
fastApi基础_第18张图片
pycharm中自带的终端存在问题
fastApi基础_第19张图片
fastApi基础_第20张图片
fastApi基础_第21张图片
除pycharm23版本外,针对虚拟环境提出一下建议。

  • 不推荐使用pycharm提供的虚拟环境
  • 如果使用虚拟环境,可以手动新建虚拟环境——手动新建环境后,在pycharm终端中进入虚拟环境并激活,既可以使用虚拟环境
  • 学习过程中使用全局解释器
    因为我使用pycharm23版本,因此我使用pycharm虚拟环境。在虚拟环境中首先安装以下两个包
    pip install fastApi
    pip install uvicorn

5、第一个fastAPI

fastApi基础_第22张图片

from fastapi import FastAPI

# 创建一个对象
app = FastAPI()

# 在函数上添加一个装饰器,app就是上面创建的对象
# 其中参数是指明路径
@app.get("/")  # 路径(函数)装饰器
def hello():   # 路径函数或接口函数
    return {"hello":"world698654"}    #接口返回值

fastApi基础_第23张图片

fastApi基础_第24张图片
fastApi基础_第25张图片

在浏览器中安装json View插件,序列化Json数据
fastApi基础_第26张图片
启动方式二
fastApi基础_第27张图片
fastApi基础_第28张图片

6、路径参数

fastApi基础_第29张图片

  • 静态路径参数
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"home":"首页"}

@app.get("/apple")
def apple():
    return {"name":"apple","price":9.9}

@app.get("/huawei")
def huawei():
    return {"name":"huawei", "price":9.9}
  • 动态参数校验

fastApi基础_第30张图片

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"home":"首页"}

@app.get("/apple")
def apple():
    return {"name":"apple","price":9.9}

@app.get("/huawei")
def huawei():
    return {"name":"huawei", "price":9.9}

# 动态路由的解决方式
@app.get("/books/{book_id}")
def books(book_id):
    print(type(book_id))  # 默认情况下参数类型为字符串类型
    return {"id":book_id, "title":f"图书{book_id}"}

@app.get("/foods/{food_id}")
def foods(food_id: int):
    # 因为函数中指定了参数类型为int ,所以fastAPI自动将其转换为int
    # 同时进行参数类型校验
    print(type(food_id))
    return {"id":food_id, "title":f"图书{food_id}"}

7、接口顺序问题

fastApi基础_第31张图片

fastApi基础_第32张图片

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"home":"首页"}

@app.get("/books/most_popular")
def most_popular( ):
    # 因为函数中指定了参数类型为int ,所以fastAPI自动将其转换为int
    # 同时进行参数类型校验
    return {"data":"这是本站最畅销的图书"}

# 动态路由的解决方式
@app.get("/books/{book_id}")
def books(book_id):
    print(type(book_id))  # 默认情况下参数类型为字符串类型
    return {"id":book_id, "title":f"图书{book_id}"}


8、查询参数

fastApi基础_第33张图片
fastApi基础_第34张图片
在这里插入图片描述

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"home":"首页"}
BOOKS = [
    {"id":1, "titile":"图书1"},
    {"id":2, "titile":"图书2"},
    {"id":3, "titile":"图书3"},
    {"id":4, "titile":"图书4"},
    {"id":5, "titile":"图书5"},
    {"id":6, "titile":"图书6"},
    {"id":7, "titile":"图书7"},
    {"id":8, "titile":"图书8"},
    {"id":9, "titile":"图书9"},
    {"id":10, "titile":"图书10"},


]

@app.get("/books")
# 函数中的参数与前端请求的参数必须一直
def books(page:int,size:int):
    # 假设page=1,size=3,则BOOKS[0:3],从索引0开始取3个数
    return BOOKS[(page-1)*size:page*size]


# @app.get("/books")
# # 函数中的参数与前端请求的参数必须一直
# def books(page,size):
#     print(type(page),print(size)) # 前端传递过来默认类型为size
#     return BOOKS

openAPI

fastApi基础_第35张图片

fastApi基础_第36张图片
在Swagger模式下可以与后台进行交互
fastApi基础_第37张图片
fastApi基础_第38张图片

HTTP协议

fastApi基础_第39张图片

你可能感兴趣的:(HTML,fastapi,python)