FastAPI 的路由介绍及使用

这篇具有很好参考价值的文章主要介绍了FastAPI 的路由介绍及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一篇文章中,我介绍了 FastAPI 框架的安装和 HelloWorld 项目搭建方式。本文将介绍如何使用 Router 路由处理 FastAPI 中的请求。

什么是路由

路由 Router 就像是一个流水线上的线长,协调生产,下达命令给不同的组长进行分工,然后执行基本的任务。路由器的工作目的是,在团队中工作时,您可能必须在团队成员(这里的团队负责人是队长)之间分配复杂性,这将有助于更快地完成项目,正确的 SME 将在该分支/路由器上工作.

FastAPI 的路由介绍及使用

路由是构建网络应用的一个重要部分。FastAPI 中的路由是灵活和方便的。路由是处理从客户端发送到服务器的 HTTP 请求的过程。HTTP 请求被发送到定义的路由,这些路由有定义的处理程序来处理请求和响应。这些处理程序被称为 Route Handler。

FastAPI 中的路由

参考 FastAPI 文档对路由器的介绍:如果你正在构建一个应用程序或一个 Web API,你很少会把所有东西都放在一个文件中。 FastAPI 提供了一个方便的工具来构建您的应用程序,同时保持所有的灵活性。

先来看一个例子:

from fastapi import FastAPI

app = FastAPI()

@app.get('/') 
async def welcome() -> dict:
    return { "message": "Welcome to my Page"}

uvicorn 工具指向 FastAPI 的实例,为应用程序服务:

uvicorn main:app --port 8888 --reload

FastAPI 的路由介绍及使用

访问

$ curl http://127.0.0.1:8888
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    32  100    32    0     0  11279      0 --:--:-- --:--:-- --:--:-- 16000{"message":"Welcome to ma Page"}

FastAPI()实例可用于路由操作,正如前面所见。然而,这种方法通常用于在路由过程中只能处理单一路径的应用程序。在使用 FastAPI() 实例创建一个执行独特功能的单独路由的情况下,应用程序将无法运行两个路由,因为 uvicorn 工具只能运行一个入口点。

如果有多个路由

让我们了解一下如何用代码来创建路由器,下面是我们的基本(非路由器)代码,在这里,我创建了一个例子:主页、添加数字页面和添加字符串页面。由于这是一个例子,我只取了两个父路径为 '/add/' 的函数,但在现实生活中,你可能会发现 20-30 个这样的函数,然后你将需要创建路由器,因为在一个文件中处理太多复杂的东西会变得很麻烦。

from fastapi import FastAPI


app = FastAPI()

@app.get('/') 
async def welcome() -> dict:
    return { "message": "Welcome to my Page"}

@app.get('/add/numbers')
def add_numbers():
    return { "message": "we are adding numbers"}

@app.get('/add/strings')
def add_strings():
    return { "message": "we are adding strings"}

那么,问题来了,我们如何处理需要一系列路由执行不同功能的广泛应用程序呢?答案是 APIRouter 类。

利用 APIRouter 类实现路由

APIRouter 类属于 FastAPI 包,为多个路由创建路径操作。APIRouter 类鼓励应用程序路由和逻辑的模块化和组织化。

APIRouter 类从 fastapi 包中导入,并创建一个实例。路由方法被创建并从创建的实例中分发,例如如下:

from fastapi import APIRouter

# create router
router = APIRouter(
    prefix='/add',
    tags = ['addition']
)

上面的代码将创建一个路由器实例,它可以带有一些参数,比如下面两个的含义:

  • prefix:在特定页面中 fastapi 提供的每个装饰器中添加前缀
  • tags:这将帮助我们找到属于哪个类别的功能(想想我们可以找到相关文章的主题标签)

然后可以利用 APIRouter 类创建一个新的路径操作,创建一个新文件 add_router.py

from fastapi import APIRouter

# create router
router = APIRouter(
    prefix='/add',
    tags = ['addition']
)


@router.get('/numbers')
def add_numbers():
    return { "message": "we are adding numbers"}

@router.get('/strings')
def add_strings():
    return { "message": "we are adding strings"}

APIRouter 类的工作方式与 FastAPI 类的工作方式相同。然而、 uvicorn 不能使用 APIRouter 实例为应用程序服务,这与 FastAPI 不同。使用 APIRouter 类定义的路由需要被添加到 FastAPI 实例中,以实现它们的功能。

为了使刚刚定义的路由可见,我们将使用 include_router() 方法把 add_router 路径操作处理程序到主 FastAPI 实例中,如下:

from fastapi import FastAPI

from src import add_router # importing router

app = FastAPI() # create an app instance



@app.get('/') 
async def welcome() -> dict:
    return { "message": "Welcome to my Page"}

app.include_router(add_router.router)

include_router(router, ...) 方法负责在主程序的实例中加入用 APIRouter 类定义的路由添加到主应用程序的实例中,以使路由变得可见。

最终的文件目录结构如下:

FastAPI 的路由介绍及使用

测试 Router 功能

启动我们的 uvicorn 服务:

uvicorn src.main:app --reload --port 8888

在控制台看到如下信息,表示服务启动成功:

$ uvicorn src.main:app --reload --port 8888
INFO:     Will watch for changes in these directories: ['C:\Users\Wade\Desktop\FastAPI\fastwebprojects']
INFO:     Uvicorn running on http://127.0.0.1:8888 (Press CTRL+C to quit)
INFO:     Started reloader process [23508] using StatReload
INFO:     Started server process [30600]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

使用浏览器或者终端发送 GET 请求:

$ curl http://127.0.0.1:8888
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    32  100    32    0     0  12255      0 --:--:-- --:--:-- --:--:-- 16000{"message":"Welcome to my Page"}

浏览器如下,访问 http://127.0.0.1:8888/

FastAPI 的路由介绍及使用

访问 http://127.0.0.1:8888/add/numbers :

FastAPI 的路由介绍及使用

访问 http://127.0.0.1:8888/add/strings

FastAPI 的路由介绍及使用

最后,通过访问 http://127.0.0.1:8888/docs 来查看我们刚刚定义的接口,我们将看到自动 API 文档,包括来自所有子模块的路径,使用正确的路径(和前缀)和正确的标签名:

FastAPI 的路由介绍及使用

总结

我们已经学会了 FastAPI 中的 APIRouter 类是如何工作的,以及如何将其包含在 main 应用实例中,以实现所定义的路径操作的使用。希望本文能对你有作用,咱们下一篇文章再见!

希望本文能对你有所帮助,如果喜欢本文,可以点个关注.

下一篇文章见!宇宙古今无有穷期,一生不过须臾,当思奋争。

参考链接:文章来源地址https://www.toymoban.com/news/detail-448177.html

  • Bigger Applications - Multiple Files
  • Router API
  • Routers in FastAPI
  • FastAPI Error loading ASGI app. Could not import module ‘main’

到了这里,关于FastAPI 的路由介绍及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ARM Coresight 系列文章 10.1 - ARM Coresight STM 介绍及使用】

    上篇文章:ARM Coresight 系列文章 10 - ARM Coresight STM 介绍及使用 下篇文章:ARM Coresight 系列文章 10.2 - ARM Coresight STM Trace packets STM 支持两种类型的软件的数据,一种是 guaranteed的,另一种是 invariant 的, 对于 guaranteed 类型的数据传输,当STM 无法接收 AXI总线发过来的数据时,会通

    2024年02月16日
    浏览(43)
  • 记录第一篇被”华为开发者联盟鸿蒙专区 “收录的文章

    记录第一篇被”华为开发者联盟鸿蒙专区 “社区收录的文章。 坚持写作的动力是什么? 是记录、分享,以及更好的思考 。  

    2024年02月14日
    浏览(37)
  • R语言复现一篇6分的孟德尔随机化文章

    上一期我们对孟德尔随机化做了一个简单的介绍,今天我们来复现一篇6分左右的使用了孟德尔随机化方法的文章,文章的题目是:Mendelian randomization analysis does not reveal a causal influence of mental diseases on osteoporosis(孟德尔随机分析没有揭示精神疾病对骨质疏松症的因果影响) 这

    2024年02月13日
    浏览(39)
  • 【ARM Coresight 系列文章 3 -- DAP(Debug Access Port) 使用详细介绍】

    请阅读 【ARM Coresight SoC-400/SoC-600 专栏导读】

    2024年02月03日
    浏览(41)
  • 花30分钟,我用ChatGPT写了一篇2000字文章(内附实操过程)

    有了ChatGPT之后,于我来说,有两个十分明显的变化: 1. 人变的更懒 因为生活、工作中遇到大大小小的事情,都可以直接找ChatGPT来寻求答案。 2. 工作产出量更大 之前花一天,甚至更久才能写一篇原创内容,现在有了主题、框架之后,ChatGPT 30分钟就能给我一篇「水准之上」

    2024年02月07日
    浏览(57)
  • React 路由使用-详细介绍

    路由初使用 srcpageArticleindex.js srcrouterindex.js srcindex.js 跳转的两种方式 方式一 :声明式导航跳转,原理是转换为 a 标签了 方式二 :命令式导航, 编程式导航是指通过useNavigate\\\"钩子得到导航方法,然后通过调用方法以命令式的形式进行路由跳转,比如想在登录请求完毕之后

    2024年02月14日
    浏览(36)
  • 【Fastapi框架】Fastapi的使用和进阶

    原文作者 :我辈李想 版权声明 :文章原创,转载时请务必加上原文超链接、作者信息和本声明。 新建main.py文件, 方式一:命令启动 方式二:在mian.py中加启动代码 http://127.0.0.1:8000/ http://127.0.0.1:8000/items/1 http://127.0.0.1:8000/items/1?q=2 http://127.0.0.1:5678/docs#/ http://127.0.0.1:5678/redoc

    2024年02月04日
    浏览(41)
  • AI帮写会重复吗:一篇探讨AI写作助手是否会导致内容重复的文章

    大家好,小发猫降重今天来聊聊AI帮写会重复吗:一篇探讨AI写作助手是否会导致内容重复的文章,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: AI帮写会重复吗:一篇探讨AI写作助手是否会导致内容重复的文章

    2024年03月14日
    浏览(64)
  • 有线路由器如何使用方法介绍

    tp-link各产品开启路由器的方法: 首先介绍一下利用路由器实现多台电脑同时上网的方法.首先具备的条件是:路由器一个(可以为4口,8口,16口,甚至更多的),如果你有很多台电脑,可以买个多口的交换机.网线直通线数条,电信mode一个(或者你是专线那就不需要

    2024年02月05日
    浏览(43)
  • 体验CSDN的ChitGPT生成式AI大模型-------一篇技术性文章生成文档特别快

    冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包