FastAPI框架入门

编程入门 行业动态 更新时间:2024-10-25 02:19:12

FastAPI<a href=https://www.elefans.com/category/jswz/34/1770644.html style=框架入门"/>

FastAPI框架入门

FastAPI框架入门

  • 介绍
  • 安装
  • 入门
    • swagger 可交互api文档
    • redoc
  • 传参
    • get传参
    • json和form表单传参
    • 使用枚举限定参数
    • URL传递路径参数
    • 上传文件
  • 开始一个项目
    • 项目布局
    • router(类似FLASK蓝图)
      • main.py文件
      • appapi目录下__init__.py
      • config.py
      • 写一个自定义用户token验证

介绍

  • 快速:非常高的性能、异步框架,看齐的NodeJS和Go(感谢Starlette和Pydantic)。现有最快的Python框架之一。
  • 快速编码:将功能开发速度提高约200%至300%。
  • 自动:不需要开发人员去校对数据类型
  • 健壮:获取可用于生产的代码。具有自动交互式文档。
  • 基于标准:基于(并完全兼容)API的开放标准:OpenAPI(以前称为Swagger)和JSON Schema。

安装

环境: Python3.7.7,Windows10

pip install fastapi uvicorn  # fastapi以及启动用
pip install aiofiles jinja2  # 配置使用静态文件和模板文件需要
pip install python-multipart  # form表单数据需要
  • 如果pip install fastapi[all] 会安装所有模块,不建议使用

入门

from fastapi import FastAPIapp = FastAPI()@app.get("/")  # 监听GET请求
async def read_root():return {"Hello": "World"}  # 返回json

然后运行即可,默认端口是8000,reload即Debug模式开

端口运行

uvicorn main:app --reload

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

import uvicornif __name__ == '__main__':uvicorn.run('main:app', reload=True,host='0.0.0.0', port=8000)

swagger 可交互api文档

  • 打开127.0.0.1:8000/docs 即可,可交互api文档

redoc

  • 127.0.0.1:8000/redoc, 接口文档

传参

get传参

  • get请求时,参数通常在url拼接参数和query方式
  • 举例:http://127.0.0.1:8000/user/10?mod=login
@app.get("/user/{user_id}")
async def user_mod(user_id: int, mod: str = None):  # str = None 代表mod参数可以为空return {"user_id": user_id,"mod": mod}

json和form表单传参

  • form-data方式时需要pip安装python-multipart
  • 可以使用我们可以采用 application/json 的方式传参, 并且定义一个参数类来管控参数
from fastapi import FastAPI
from fastapi import Form
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):  # 定义一个类用作参数name: strprice: floatis_offer: bool = None  # 该字段可为空@api.post("/{item_id}")
async def get_item(item_id: int = 1, item: Item, form_param: str = Form(...)):  # item需要与Item对象定义保持一致# Form(...)代表必填return {"item_name": item.name,"item_id": item_id,'form_param': form_param  # 这是form参数}

接口文档界面可以查看参数并进行测试

使用枚举限定参数

from enum import Enumclass ModelName(str, Enum):alexnet = "alexnet"resnet = "resnet"lenet = "lenet"@app.get("/model/{model_name}")

更多推荐

FastAPI框架入门

本文发布于:2024-02-06 11:08:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748442.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:框架   入门   FastAPI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!