FastApi的搭建与测试
创始人
2024-05-30 12:53:57
0

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

相关内容

热门资讯

初二幸福的作文800字(通用... 初二幸福的作文800字 篇一初二生活中的幸福初二,是人生中一个特殊的阶段。在这个阶段,我感受到了许多...
从前那么慢那么美初二作文(优... 从前那么慢那么美初二作文 篇一从前那么慢那么美从前的日子总是那么慢,时间仿佛被拉得很长很长,每一天都...
云南昆明中考满分作文:语文课... 云南昆明中考满分作文:语文课上 篇一题目:语文课上的思考与启示在我上中学的三年时间里,语文课一直是我...
成人中考作文范文大全【优质6... 成人中考作文范文大全 篇一话题:城市交通拥堵的原因和解决办法随着城市化进程的加快,城市交通拥堵问题日...
中考数学复习顺序(优选3篇) 中考数学复习顺序 篇一在备战中考数学复习时,确定一个合理的复习顺序对于学生来说非常重要。一个好的复习...
烦恼的暑假作文500字初二(... 烦恼的暑假作文500字初二 篇一:无聊的暑假生活暑假,对于许多初二的学生来说,是一个期待已久的假期。...
中考作文素材【精选6篇】 中考作文素材 篇一标题:青少年沉迷网络游戏随着科技的发展和互联网的普及,网络游戏已经成为了许多青少年...
中考数学知识点【优质3篇】 中考数学知识点 篇一在中考数学中,有一些重要的知识点需要我们掌握和理解。下面我将为大家介绍几个常见的...
惟独喜欢根之力中考作文(最新... 惟独喜欢根之力中考作文 篇一根之力,意味着源源不断的力量。它能够给予我们无穷的动力,让我们在困难面前...
栀子花开作文 栀子花开作文栀子花开六月的季节,栀子花又开了。阳光撒满了整个校园,支离破碎的挂在墙头树枝上,班驳得让...
中考数学知识点统计初步【优质... 中考数学知识点统计初步 篇一数学是中考的重要科目之一,对于学生来说,掌握好数学知识点是非常关键的。为...
历年淮南中考满分范文(实用6... 历年淮南中考满分范文 篇一如何培养良好的学习习惯学习习惯是一个人学习能力的基础,它决定了一个人在学习...
广州中考语文题型及对应分值【... 广州中考语文题型及对应分值 篇一广州中考语文题型及对应分值随着广州中考的临近,对于考生来说,了解各科...
中考语文一词多义整理【经典5... 中考语文一词多义整理 篇一在中考语文考试中,经常会涉及到一词多义的题目。一词多义是指一个词语有多种不...
中考半命题作文600字【经典... 中考半命题作文600字 篇一:我的梦想梦想是每个人内心深处最美好的愿望,它是我们前进的动力,给了我们...
广东中考最好的奖赏满分作文【... 广东中考最好的奖赏满分作文 篇一广东中考最好的奖赏满分作文在广东中考中获得满分是每个考生的梦想,因为...
吉林市中考语文满分作文赏析:... 吉林市中考语文满分作文赏析:春嫩不惧寒 篇一春嫩不惧寒春天是一个充满希望和生机的季节,它给人们带来了...
中考作文解析及范文读书【优秀... 中考作文解析及范文读书 篇一中考作文解析是中考前和中考后的重要环节之一。在考前,解析过去几年的中考作...
中考优秀作文画里宏村【精简3... 中考优秀作文画里宏村 篇一宏村,古朴宁静的江南水乡,又被誉为“画里的宏村”。宏村位于安徽省黄山市歙县...
安徽中考优秀作文:你是我最-... 安徽中考优秀作文:你是我最--的人 篇一我曾经遇到过很多重要的人,但是在我心中,你是我最重要的人。每...