FastApi的搭建与测试

news2024/10/2 22:25:29

一、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 FastAPI

app = 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 Union

from fastapi import FastAPI

app = 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 Union

from fastapi import FastAPI

app = 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 Union

from fastapi import FastAPI, Query

app = 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java学习环境一站说明(保姆级详细教学)

1.Java开发环境搭建官网下载www.oracle.com2.安装注意:1.选择安装位置时尽量不要安装到C盘,路径中不要有空格以及中文的存在2.开发人员安装的jdk中包含了jre,所以不需要单独安装jre3.环境变量配置打开高级系统设置2.点击环境变量3.在系统变量…

FreeSWITCH 智能呼叫流程设计

文章目录1. 智能呼叫流程2. 细节处理1. 呼叫字符串指定拨号计划2. 外呼的拨号计划3. 语音打断的支持1. 智能呼叫流程 用户与机器人对话通常都是以文本的形式进行,但是借助 ASR 和 TTS 技术,以语音电话为载体的智能呼叫系统成为可能。智能呼叫系统涉及到…

Python蓝桥杯训练:基本数据结构 [二叉树] 上

Python蓝桥杯训练:基本数据结构 [二叉树] 上 文章目录Python蓝桥杯训练:基本数据结构 [二叉树] 上一、前言二、有关二叉树理论基础1、二叉树的基本定义2、二叉树的常见类型3、二叉树的遍历方式三、有关二叉树的层序遍历的题目1、[二叉树的层序遍历](http…

网络原理之传输层协议,TCP中的主要核心机制(重点)

目录 一. 传输层中的端口号 二. UDP协议 三. TCP协议 四. TCP中的核心机制 1. 确认应答 2. 超时重传 3. 连接管理 建立连接(三次握手) 断开连接(四次挥手) 4. 滑动窗口 考虑丢包情况1:ack丢了 考虑丢包情况2:数据丢了 5. 流量控制 6. 拥塞…

学这些语言工作更吃香,Python虽然再次摘得桂冠,但在就业需求中位居第一的还得是它!

2022 IEEE 编程语言榜单发布! IEEE Spectrum 2022 编程语言排名前十的分别是:Python,C,C,C#,Java,SQL,JavaScript,R,HTML,TypeScript。 一. Pyth…

嵌入式学习笔记——寄存器实现控制LED小灯

文章目录前言GPIO通用输出模式初始化LED小灯的GPIO原理图初始化代码初始化的效果功能函数封装直接分开宏定义两个使用条件运算符封装函数实现简单的功能前言 上一篇中,介绍了GPIO相关的所有寄存器,并在最后简单实现了一个LED灯的控制,由于那…

以获取笔记本电池信息为例介绍WMI的使用

注:本人也还没有完全弄懂WMI的原理,以下内容仅供参考。。。 简单来说,比起Win32提供的接口,WMI可以提供更多的系统信息,它本身是一个数据库架构,通过它可以访问、配置、管理和监视几乎所有的Windows资源&…

AM5728(AM5708)开发实战之移植OpenCV-3.4.11

一 概述 OpenCV是一个开源的跨平台计算机视觉库,可以运行在Linux、Windows、Mac OS等操作系统上,它为图像处理、模式识别、三维重建、物体跟踪、机器学习提供了丰富的算法。 由于OpenCV依赖包特别多,尽量不要使用交叉编译,即在什…

VMware虚拟机搭建环境通用方法

目录一、前期准备1.下载并安装一个虚拟机软件二、开始创建虚拟机1.配置虚拟机硬件相关操作2.虚拟机网络相关操作三、开机配置相关内容0.开机遇到报错处理(选看--开机没有报错请忽略)1.开始配置2.开机之后配置3.使用xshell远程登录4.使用xshell配置虚拟机…

下一个7年,保持期待、持续思考,酷雷曼继续向前!

过去7年,我们一直在思考, VR技术究竟能为我们的生活带来什么? 是足不出户就能云游千里的秀美风光? 是在家就能沉浸式体验线上消费的便利? 还是为商企和用户搭建更快速的沟通桥梁? NO.1、技术变革 在信…

磁盘阵列Raid探讨

最近公司买服务器,顺便了解一下服务器配置方面的问题 以下讨论的都是入门级服务器配置,全部是主观意见,没有任何科学依据,欢迎大家讨论 Raid0,Raid1,Raid10,Raid5,Raid6(Raid5热备)…

计算机科学导论笔记(四)

目录 六、计算机网络和因特网 6.1 引言 6.1.1 网络 6.1.2 因特网 6.1.3 硬件和软件 6.1.4 协议分层 6.1.5 TCP/IP协议族 6.2 应用层 6.2.1 应用层模式 6.2.2 标准客户机-服务器应用 6.2.3 文件传输协议(FTP) 6.2.4 电子邮件 6.2.5 TELNET 6…

vue 模拟 chatgpt 聊天效果:js 实现逐字显示、延时函数模拟对话

vue 模拟 chatgpt 聊天效果&#xff1a;js 实现逐字显示、延时函数模拟对话模拟 chatgpt 聊天功能&#xff0c;展示对话效果。其中比较有意义的技术点是&#xff1a;js 实现逐字显示、延时函数&#xff0c;同步遍历。 <template><div class"chat-gpt">…

SpringBoot中的bean注入方式和原理介绍

Spring Boot是一个非常流行的Java框架&#xff0c;它可以帮助开发者快速地构建高效、健壮的应用程序。其中一个重要的功能就是依赖注入&#xff0c;也就是将一个对象注入到另一个对象中&#xff0c;以便它们可以相互协作。在Spring Boot中&#xff0c;依赖注入是通过bean实现的…

易优cms 标签常用函数

【基础用法】 标签&#xff1a;无 描述&#xff1a;作用于标签变量 用法&#xff1a; {$field.typename|html_msubstr###,0,10,true} 注意&#xff1a;函数与字段名之间用竖线&#xff08;|&#xff09;隔开&#xff0c;###表示当前变量 属性&#xff1a; 无 涉及表字段…

Kafka 消费进度

Kafka 消费进度Kafka 自带命令Java Consumer APIJMX 监控指标监控消费进度 : 看滞后程度&#xff1a;消费者 Lag , Consumer Lag 滞后程度 : 消费者落后于生产者的程度 如 : Kafka 生产者向某主题成功生产 100 万条消息&#xff0c;消费者消费 80 万条消息那消费者就滞后 20 …

ccc-pytorch-卷积神经网络实战(6)

文章目录一、CIFAR10 与 lenet5二、CIFAR10 与 ResNet一、CIFAR10 与 lenet5 第一步&#xff1a;准备数据集 lenet5.py import torch from torch.utils.data import DataLoader from torchvision import datasets from torchvision import transformsdef main():batchsz 128C…

基于嵌入式libxml2的ARM64平台的移植(aarch64)

由于libxml在移植过程中依赖于zlib的库文件&#xff0c;因此本节内容包含zlib&#xff08;V1.2.13&#xff09;的移植libxml2(V2.10.3)的移植两部分组成。 &#xff08;一&#xff09;zlib的移植&#xff08;基于arm64&#xff09; 1、在github上下载zlib的最新源码压缩包&am…

【C++的OpenCV】第十课-OpenCV图像常用操作(七):直方图和直方图同等化(直方图均衡化)

&#x1f389;&#x1f389;&#x1f389;欢迎各位来到小白piao的学习空间&#xff01;\color{red}{欢迎各位来到小白piao的学习空间&#xff01;}欢迎各位来到小白piao的学习空间&#xff01;&#x1f389;&#x1f389;&#x1f389; &#x1f496;&#x1f496;&#x1f496…

看完书上的链表还不会实现?不进来看看?

1.1链表的概念定义&#xff1a;链表是一种物理存储上非连续&#xff0c;数据元素的逻辑顺序通过链表中的指针链接次序&#xff0c;实现的一种线性存储结构。特点&#xff1a;链表由一系列节点组成&#xff0c;节点在运行时动态生成 &#xff08;malloc&#xff09;&#xff0c;…