前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastAPI学习-2.访问路径(路由)

FastAPI学习-2.访问路径(路由)

作者头像
上海-悠悠
发布2023-08-22 12:04:20
5800
发布2023-08-22 12:04:20
举报
文章被收录于专栏:从零开始学自动化测试

路径也通常被称为端点或路由

简单demo

最简单的 FastAPI 文件可能像下面这样:

代码语言:javascript
复制
from fastapi import FastAPI

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

将其复制到 main.py 文件中。 启动服务

代码语言:javascript
复制
uvicorn main:app --reload

uvicorn main:app 命令含义如下:

  • mainmain.py 文件(一个 Python「模块」)。
  • app: 在 main.py 文件中通过 app = FastAPI() 创建的对象。
  • --reload: 让服务器在更新代码后重新启动。 仅在开发时使用该选项。

在输出中,会有一行信息像下面这样:

代码语言:javascript
复制
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

该行显示了你的应用在本机所提供服务的 URL 地址。 打开浏览器访问 http://127.0.0.1:8000

代码语言:javascript
复制
{"message": "Hello World"}

在这个例子中,它是一个 async 异步函数。 你也可以将其定义为常规函数而不使用 async def:

代码语言:javascript
复制
from fastapi import FastAPI

app = FastAPI()@app.get("/")def root():
    return {"message": "Hello World"}

分步概括

步骤 1:导入 FastAPI

代码语言:javascript
复制
from fastapi import FastAPI

FastAPI 是一个为你的 API 提供了所有功能的 Python 类。FastAPI 是直接从 Starlette 继承的类。

步骤 2:创建一个 FastAPI「实例」

代码语言:javascript
复制
app = FastAPI()

这里的变量 app 会是 FastAPI 类的一个「实例」。

这个实例将是创建你所有 API 的主要交互对象。这个 app 同样在如下命令中被 uvicorn 所引用:

代码语言:javascript
复制
uvicorn main:app --reload

如果你创建的实例不是app,如下

代码语言:javascript
复制
api = FastAPI()

将代码放入 main.py 文件中,然后你可以像下面这样运行 uvicorn

代码语言:javascript
复制
uvicorn main:api --reload

步骤 3:创建一个路径操作

这里的「路径」指的是 URL 中从第一个 / 起的后半部分。 所以,在一个这样的 URL 中:

代码语言:javascript
复制
https://example.com/items/foo

路径会是 /items/foo

「路径」也通常被称为「端点」或「路由」。

开发 API 时,「路径」是用来分离「关注点」和「资源」的主要手段。

操作 这里的「操作」指的是一种 HTTP「方法」。 下列之一:

  • POST
  • GET
  • PUT
  • DELETE 以及更少见的几种:
  • OPTIONS
  • HEAD
  • PATCH
  • TRACE

在 HTTP 协议中,你可以使用以上的其中一种(或多种)「方法」与每个路径进行通信。 在开发 API 时,你通常使用特定的 HTTP 方法去执行特定的行为。

通常使用:

  • POST: 创建数据。
  • GET: 读取数据。
  • PUT: 更新数据。
  • DELETE: 删除数据。

因此,在 OpenAPI 中,每一个 HTTP 方法都被称为「操作」。我们也打算称呼它们为「操作」。

定义一个_路径操作装饰器

代码语言:javascript
复制
@app.get("/")

@app.get("/") 告诉 FastAPI 在它下方的函数负责处理如下访问请求:

  • 请求路径为 /
  • 使用 get 操作

你也可以使用其他的操作:

  • @app.post()
  • @app.put()
  • @app.delete()

以及更少见的:

  • @app.options()
  • @app.head()
  • @app.patch()
  • @app.trace()

步骤 4:定义路径操作函数

这是我们的「路径操作函数」:

  • 路径: 是 /
  • 操作: 是 get
  • 函数: 是位于「装饰器」下方的函数(位于 @app.get("/") 下方)。
代码语言:javascript
复制
@app.get("/")async def root():
    return {"message": "Hello World"}

这是一个 Python 函数。

每当 FastAPI 接收一个使用 GET 方法访问 URL「/」的请求时这个函数会被调用。 在这个例子中,它是一个 async 函数。

你也可以将其定义为常规函数而不使用 async def:

代码语言:javascript
复制
@app.get("/")def root():
    return {"message": "Hello World"}

步骤 5:返回内容

代码语言:javascript
复制

    return {"message": "Hello World"}

你可以返回一个 dictlist,像 strint 一样的单个值,等等。

你还可以返回 Pydantic 模型(稍后你将了解更多)。

还有许多其他将会自动转换为 JSON 的对象和模型(包括 ORM 对象等)。尝试下使用你最喜欢的一种,它很有可能已经被支持。

总结

  • 导入 FastAPI
  • 创建一个 app 实例。
  • 编写一个路径操作装饰器(如 @app.get("/"))。
  • 编写一个路径操作函数(如上面的 def root(): ...)。
  • 运行开发服务器(如 uvicorn main:app --reload)。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单demo
  • 分步概括
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档