Python Web FastAPI框架 这篇就够了

本文介绍了FastAPI,一个高性能的PythonWeb框架,强调其快速开发、减少bug、直观易用等特点,并详细讲解了安装、基本示例、API文档生成以及不同类型的请求处理方法。
摘要由CSDN通过智能技术生成

一、简介

FastAPI是一个现代的、快速(高性能)的Python Web框架,基于标准的Python类型提示,使用Python 3.6+构建API。它是一个现代的web框架,可以快速地开发应用程序,具有以下主要特点:

  1. 快速:FastAPI的性能非常高,与NodeJS和Go相当,是最快的Python框架之一。
  2. 快速编码:FastAPI能够将开发速度提高约200%到300%,使得开发过程更加高效。
  3. 更少的bug:FastAPI的设计减少了大约40%的开发人员人为引起的错误,提高了代码的质量。
  4. 直观:FastAPI具有强大的编辑器支持,调试时间更短,使得开发过程更加便捷。
  5. 简单:FastAPI易于使用和学习,阅读文档的时间更短,使得开发者能够更快地掌握其使用方法。
  6. 代码简洁:FastAPI尽量减少代码重复,每个参数可以声明多个功能,从而减少了程序的bug。
  7. 健壮:FastAPI的生产代码会自动生成交互式文档,基于并完全兼容API的开放标准:OpenAPI和JSON模式,使得其具有更强的健壮性。

二、安装FastAPI

pip install fastapi

 

FastAPI启动依赖Uvicorn,需要安装Uvicorn

pip install uvicorn

三、学会使用FastAPI

3.1 无参示例

从输出Hello World开始

代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def index():
    return "Hello World"

终端输入启动指令

uvicorn main:app --reload

main:  这是你的主应用模块的名称。通常,你会在main.py文件中定义你的应用和路由

app: 在main.py文件中创建的对象,app = FastAPI()创建

--reload: 让Uvicorn在源代码发生更改时自动重新加载应用

3.2 携带参数示例

from fastapi import FastAPI

app = FastAPI()

@app.get("/{id}")
def index(id:int,name:str=None):
    return f"id:{id},name:{name}"

运行后根据网址打开浏览器结果显示:

 

四、API文档

在浏览器中输入下面网址,自动生成交互式API文档

127.0.0.1:8000/docs

 点击default中的Get这行显示

然后再点击右上角的Try it out按钮 此时可以通过输入参数后点击Execute 进行测试

下面就是返回响应的结果了

 五、指定路径顺序

确保固定路径在不固定的路径之前,因为路径操作是按照顺序评估的,所以根据下面的示例所示确保/id/name在/id/{name}之前,因为/id/{name}的路径也匹配/id/name

示例:

from fastapi import FastAPI

app = FastAPI()

@app.get("/id/name")
def index_name():
    return "Hello Python"

@app.get("/id/{name}")
def index(name:str=None):
    return f"Hello name:{name}"

六、Request Body请求体

示例:

from fastapi import FastAPI  
from pydantic import BaseModel   
  
# 创建一个 FastAPI 应用实例  
app = FastAPI()  
  
# 定义一个数据模型(Item),包含四个字段:name、username、age 和 school  
class Item(BaseModel):  
    name: str  # 姓名  
    username: str  # 用户名  
    age: int  # 年龄  
    school: str = None  # 学校,默认为 None  
      
# 定义一个异步函数,处理 POST 请求到 /item 路径,参数为 Item 类型的数据  
@app.post("/item")  
async def item(item: Item):  
    # 返回请求中的数据  
    return item

七、Head请求头参数

示例:

from fastapi import FastAPI, Header

app = FastAPI()


def get_token(token: str = Header(...)):
    return {"token": token}


@app.get("/items/")
async def read_items(token: str = Header(...)):
    return {"token":token}
   

八、Form表单

使用Form类需要安装python-multipart

安装命令:

pip install python-multipart

示例:

from fastapi import FastAPI, Form  
  
app = FastAPI()  
  
@app.post("/form/")  
async def handle_form_data(name: str = Form(...), age: int = Form(...)):  
    return {"name": name, "age": age}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

探索星辰大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值