Python 震惊!原来接口这么容易就可以写出来

随风 for 杭州数云测试团队 · 2022年03月30日 · 最后由 随风 回复于 2022年03月31日 · 3083 次阅读

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。

关键特性:

快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。

高效编码:提高功能开发速度约 200% 至 300%。*
更少 bug:减少约 40% 的人为(开发者)导致错误。*
智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
简单:设计的易于使用和学习,阅读文档的时间更短。
简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
健壮:生产可用级别的代码。还有自动生成的交互式文档。
标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。

安装:

pip install fastapi
pip install uvicorn

我们写两个接口试一下:

from typing import Optional
import  uvicorn
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def welcome():
    return {"welcome to ": "杭州数云西安分公司"}


@app.get("/get_tenant_infos/{tenant}")
def show_tenant(tenant:  str = None, level: int  = 1):
    if level == 3:
        tenant_type = "高级客户"
    elif level == 2:
        tenant_type = "中级客户"
    else:
        tenant_type = "普通客户"
    return {"租户": tenant, "级别": tenant_type}


if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

你已经创建了一个具有以下功能的 API:

通过 路径 / 和 /get_tenant_infos/{tenant}接受 HTTP 请求。
以上 路径 都接受 GET 操作(也被称为 HTTP 方法)。
/get_tenant_infos/{tenant} 路径 有一个 路径参数 tenant 并且应该为 str 类型。
/get_tenant_infos/{tenant} 路径 有一个可选的 int 类型的 查询参数 level 默认值为 1。

启动脚本后访问http://127.0.0.1:8000/

访问http://127.0.0.1:8000/get_tenant_infos/anta?level=3

交互式 API 文档

现在访问 http://127.0.0.1:8000/docs

此框架为开源框架:
项目地址:https://fastapi.tiangolo.com/

共收到 2 条回复 时间 点赞

不知道标题的 “震惊” 是和什么框架的写法对比得出的结论?建议文中给点对比参考,要不可能每个人接触的框架不一样,有的觉得比自己用的容易,有的可能没感觉。比如我自己就没啥感觉,看起来和日常接触的写法基本差不多,还少了个很常见的基于数据库表结构自动生成 rest 接口代码。

另外,这个 FastAPI 是你们自研后开放出来的么?还是业内已有的那个开源框架?如果是后者,建议说明下并附上框架地址之类的信息,避免引起误解吧。

陈恒捷 回复

震惊是相对于测试人员,简单易上手,开源框架,已附上地址

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册