一、fastapi的安装

1-1、使用pip安装

安装fastapi的语句

pip install fastapi -i https://mirrors.aliyun.com/pypi/simple

因为fastapi启动依赖于uvicorn,所以我们还需要安装uvicorn。

pip install uvicorn -i https://mirrors.aliyun.com/pypi/simple

下面我们来验证一下安装是否成功。

验证

我们创建一个文件,名称叫做main.py。

from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def root():return {"message": "Hello World"}

然后我们执行一个指令:

uvicorn main:app --reload
uvicorn main:app 命令含义如下:main:main.py 文件(一个 Python「模块」)。
app:在 main.py 文件中通过 app = FastAPI() 创建的对象。
--reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。
如果服务器返回了一串结果是:
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [8438] using statreload
INFO:     Started server process [8440]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

打开浏览器访问 http://127.0.0.1:8000。
你将看到如下的 JSON 响应:

{"message": "Hello World"}

交互式 API 文档

跳转到 http://127.0.0.1:8000/docs。

你将会看到自动生成的交互式 API 文档。

可选参数

通过同样的方式,你可以将它们的默认值设置为 None 来声明可选查询参数:

from typing import Unionfrom fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: str, q: Union[str, None] = None):if q:return {"item_id": item_id, "q": q}return {"item_id": item_id}

在这个例子中,函数参数 q 将是可选的,并且默认值为 None。

查询参数类型转换

你还可以声明 bool 类型,它们将被自动转换:

from typing import Unionfrom fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: str, q: Union[str, None] = None, short: bool = False):item = {"item_id": item_id}if q:item.update({"q": q})if not short:item.update({"description": "This is an amazing item that has a long description"})return item

这个例子中,如果你访问:

http://127.0.0.1:8000/items/foo?short=1

http://127.0.0.1:8000/items/foo?short=True

http://127.0.0.1:8000/items/foo?short=true

http://127.0.0.1:8000/items/foo?short=on

http://127.0.0.1:8000/items/foo?short=yes

或任何其他的变体形式(大写,首字母大写等等),你的函数接收的 short 参数都会是布尔值 True。对于值为 False 的情况也是一样的。

额外的校验

我们打算添加约束条件:即使 q 是可选的,但只要提供了该参数,则该参数值不能超过50个字符的长度。

导入 Query

为此,首先从 fastapi 导入 Query:

from typing import Unionfrom fastapi import FastAPI, Queryapp = FastAPI()@app.get("/items/")
async def read_items(q: Union[str, None] = Query(default=None, max_length=50)):results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}if q:results.update({"q": q})return results

FastApi的搭建与测试相关推荐

  1. 【FastAPI 03】FastAPI快速搭建一个博客系统

    标题:FastAPI快速搭建一个博客系统 大家好,我是Kuls. 这是<小白学FastAPI>系列的第三篇文章. 今天我们主要讲的是FastAPI快速搭建一个博客系统. 这里可能有些小伙伴 ...

  2. 大数据调度平台Airflow(八):Airflow分布式集群搭建及测试

    目录 Airflow分布式集群搭建及测试 一.节点规划 二.airflow集群搭建步骤 1.在所有节点安装python3.7 2.在所有节点上安装airflow 三.初始化Airflow 1.每台节点 ...

  3. 搭建渗透测试环境选自KaliLinux无线网络渗透测试教程

    第1章搭建渗透测试环境 许多提供安全服务的机构会使用一些术语,如安全审计.网络或风险评估.以及渗透测试.这些术语在含义上有一些重叠,从定义上来看,审计是对系统或应用的量化的技术评估.安全评估意为对风险 ...

  4. 怎样从0开始搭建一个测试框架_0

    怎样从0开始搭建一个测试框架_0 在开始之前,请让我先声明几点: 这个"从0开始"并不是说你不需要任何基础知识,而是指框架从无到有的过程,要开始搭建还是需要一定基础 请确保你已经掌 ...

  5. tensorflow环境下的识别食物_Tensorflow object detection API 搭建属于自己的物体识别模型——环境搭建与测试...

    1.开发环境搭建 ①.安装Anaconda 建议选择 Anaconda3-5.0.1 版本,已经集成大多数库,并将其作为默认python版本(3.6.3),配置好环境变量(Anaconda安装则已经配 ...

  6. 新课推荐 | 用 Django 快速搭建 API 测试工具

    API,即:应用编程接口(Application Programming Interface),就是软件系统不同组成部分衔接的约定. 由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部 ...

  7. 【Filecoin源码仓库全解析】第一章:搭建Filecoin测试节点

    2019.2.14 情人节,Filecoin项目开放了核心源码仓库go-filecoin,并更新了 filecoin-project organization下的诸多核心成果,这意味着,Filecoi ...

  8. MQTT服务器搭建和测试步骤及遇见的问题

    MQTT服务器搭建和测试步骤及遇见的问题 前言:MQTT服务器有好多种,查看:Servers/Brokers Apache-Apollo:一个代理服务器,在ActiveMQ基础上发展而来,可以支持ST ...

  9. Docker学习总结(23)——Docker搭建大规模测试环境的实践

    内容来源:2017年4月8日,第四范式资深测试开发工程师孙高飞在"饿了么技术沙龙[第四弹]北京研发中心测试专场"进行<docker搭建大规模测试环境的实践>演讲分享.I ...

最新文章

  1. 网络的塔建+模型训练
  2. index.html安全文件,restorecon - 恢复文件的安全上下文
  3. TensorFlow TFRecord
  4. shell 判断字符串是否存在包含关系
  5. 2016php技术面试题,一个php的面试题,大家看看
  6. python处理nc文件时,遇到不同的产品中经度坐标的排序不一致
  7. web前端入门到实战:HTML图像标签img和源属性src及Alt属性、宽高、对齐
  8. 产品读书《粉丝经济:传统企业转型互联网的突破口》
  9. 【Linux学习笔记】last命令
  10. 迅捷路由器造成计算机无法上网,迅捷(FAST)300M无线路由器设置后不能上网的解决方法...
  11. 使用ORC识别图片的文字
  12. python勾股数_勾股数-随心随性无为而为-51CTO博客
  13. 2015 ACM Arabella Collegiate Programming Contest
  14. Android 什么是Hook
  15. 商务数据分析与应用类毕业论文文献有哪些?
  16. LaTex(论文排版)的使用心得及入门教程
  17. C++11 in Qt-安晓辉-专题视频课程
  18. 私信基本功能数据库设计
  19. 在几何画板中如何制作圆柱的侧面展开动画_几何画板如何制作圆柱体形成的过程动画...
  20. uniappAndroid离线打包 小米审核不通过

热门文章

  1. 2018年企业采购平台哪个好?供应平台哪个好?
  2. 哈工大 计算机系统 大作业
  3. DHR能否重塑人力资源管理,助力企业数字化转型?|企服三会系列报道
  4. Dreamweaver 8序列号
  5. iview template模式_iview render的使用
  6. 解决未能加载文件或程序集“Newtonsoft.Json ....“或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
  7. 设置滚动条默认样式 谷歌浏览器
  8. 一篇文章让你看懂什么是RTK定位
  9. 如何设置待办事项提前一个月提醒?
  10. JVM内功心法-JVM内存模型之内存区域