FastAPI系列 4 -路由管理APIRouter

FastAPI系列 -路由管理APIRouter

文章目录

  • FastAPI系列 -路由管理APIRouter
  • 一、前言
  • 二、APIRouter使用示例
    • 1、功能拆分
    • 2、users、books模块开发
    • 3、FastAPI主体
  • 三、运行结果

一、前言

未来的py开发者请上座,在使用python做为后端开发一个应用程序或 Web API,很少会将所有的内容都放在一个文件中。FastAPI 提供了一个方便的工具,可以在保持所有灵活性的同时构建你的应用程序。

二、APIRouter使用示例

1、功能拆分

功能:在Web输入Url返回数据,但需要使用在users、books中定义的API

├── fastapi
│   ├── __init__.py
│   ├── main.py
│   └── routers
│   │   ├── __init__.py
│   │   ├── users.py
│   │   └── books.py

app 目录包含了所有内容。并且它有一个空文件 app/init.py,它包含一个 app/main.py 文件。
routers 目录下有 books.py 和 users.py 2个文件。

项目目录层级如下:
在这里插入图片描述

2、users、books模块开发

专门用于处理用户逻辑的文件是位于 /fastapi/routers/users.py 的子模块

users.py

# -*- coding:utf-8 -*-
from fastapi import APIRouter
router = APIRouter()# 获取用户列表
@router.get("/users/", tags=["users"])
async def read_users():return [{"username": "Teacher Li"}, {"username": "Teacher Tom"}]# 获取个人详情
@router.get("/users/one", tags=["users"])
async def read_user_me():return {"username": "Teacher Li", "phone_number": "0123456789"}# 获取用户名称
@router.get("/users/{username}", tags=["users"])
async def read_user(username: str):return {"username": username}

专门用于处理书逻辑的文件是位于 /fastapi/routers/books.py 的子模块
books.py

# -*- coding:utf-8 -*-
from fastapi import APIRouterrouter=APIRouter()@router.get('/books', tags=["books"])
async def create_book(book):result={"book":book}return result@router.get('/getbooks', tags=["books"])
async def get_book():result=[{"book":'测试1'},{'book':'测试2'}]return result

此模块中的所有路径操作都有相同的:

  • 路径 prefix:路径前缀 /users。
  • tags:(仅有一个 users 标签)。
  • responses: 定义响应状态码
  • dependencies:依赖项。

3、FastAPI主体

main.py

import uvicorn
from fastapi import Depends, FastAPI
from routers import books, usersapp = FastAPI()app.include_router(users.router)
app.include_router(books.router)@app.get("/")
async def root():return {"message": "Hello Bigger Applications!"}if __name__ == '__main__':uvicorn.run(app,port=15341)

三、运行结果

uvicorn启动FastAPI后端
运行main.py
在这里插入图片描述
返回页面
在这里插入图片描述

启动服务,访问http://127.0.0.1:15341/docs,生成的APi交互文档
在这里插入图片描述

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

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

相关文章

java:使用JSqlParser给sql语句增加tenant_id和deleted条件

# 示例代码 【pom.xml】 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-core</artifactId><version>3.4.3.1</version> </dependency>【MyJSqlParserTest.java】 package com.chz.myJSqlParser;pu…

请求headers处理

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 有时在请求一个网页内容时&#xff0c;发现无论通过GET或者是POST以及其他请求方式&#xff0c;都会出现403错误。产生这种错误是由于该网页为了防止…

phpStudy里面的MySQL启动不了

C:\Users\Administrator>netstat -an | find "3306" TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING TCP 0.0.0.0:33060 0.0.0.0:0 LISTENING TCP [::]:3306 [::]:0 LISTENING TCP [::]:33060 [::]:0 LISTENING 从你提供的输出结果可以看到&#xff0c;端口3306和33060已经…

python中的turtle

turtle个别指令 初始箭头默认指向为东&#xff08;右&#xff09; 往前&#xff08;右&#xff09;三个格&#xff1a;turtle.forward(3) 往后&#xff08;左&#xff09;三个格&#xff1a;turtle.backward(3) 往左转90度&#xff1a;turtle.left(90) 往右转90度&#xf…

r语言数据分析案例25-基于向量自回归模型的标准普尔 500 指数长期预测与机制分析

一、背景介绍 2007 年的全球经济危机深刻改变了世界经济格局&#xff0c;引发了一系列连锁反应&#xff0c;波及各大洲。经济增长停滞不前&#xff0c;甚至在某些情况下出现负增长&#xff0c;给出口导向型发展中国家带来了不确定性。实体经济受到的冲击尤为严重&#xff0c;生…

ATFX汇市:日本央行维持0.1%利率不变,植田和男发言偏鹰

ATFX汇市&#xff1a;北京时间11:25&#xff0c;日本央行公布6月利率决议结果&#xff0c;宣布维持0~0.1%的基准利率区间不变&#xff0c;此前市场预期其将再次加息。消息公布后&#xff0c;USDJPY的5分钟内从157.09上涨至157.70&#xff0c;涨幅61基点。25分钟之后&#xff0c…

Ollama在MacOS、Linux本地部署千问大模型及实现WEB UI访问

一、前言 阿里通义千问发布了Qwen2&#xff0c;提供了0.5B&#xff5e;72B的量级模型&#xff0c;在​​Ollama官网​​可以搜索qwen2查看&#xff0c;本文提供了Ollama的下载&#xff08;在线/离线安装&#xff09;、Ollama运行模型、使用WebUI连接模型以及页面简单配置。 …

Leetcode刷题笔记10

14. 最长公共前缀 14. 最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 首先&#xff0c;检查边界条件 如果输入的字符串数组为空&#xff0c;直接返回空字符串。 然后使用minmax_element函数找到数组中字典序最小和最大的字符串。 因为公共前缀一定会出现在字典序最…

c++实战知识点

c实战知识点 一、概述1.数据2.C11的原始字面量3.数据类型的别名4.const修饰指针5.void关键字6.内存模型7.二级指针8.函数指针和回调函数9.数组10.C风格字符串11.二维数组用于函数的参数行指针&#xff08;数组指针&#xff09; 12.引用引用与const 13.各种形参的使用场景14.重载…

Parallels Desktop for Mac 19.4.0 (build 54570) - 在 Mac 上运行 Windows

Parallels Desktop for Mac 19.4.0 (build 54570) - 在 Mac 上运行 Windows Parallels Desktop 19 请访问原文链接&#xff1a;Parallels Desktop for Mac 19.4.0 (build 54570) - 在 Mac 上运行 Windows&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者…

Linux 基本指令2

cp 指令 cp[选项]源文件 目标文件 将源文件的内容复制到目标文件中&#xff0c;源文件可以有多个&#xff0c;最后一个文件为目标文件&#xff0c;目标文件也可以是一段路径&#xff0c;若目的地不是一个目录的话会拷贝失败。若没有路径上的目录则会新建一个&#xff0c;若源是…

特殊医学用途配方食品注册数据库

在这个追求健康的时代&#xff0c;特殊医学用途配方食品&#xff08;简称特医食品&#xff09;已成为众多特殊需求人群的膳食选择。它们不仅满足了特定疾病状态下的营养需求&#xff0c;更是病患康复之路上的重要伴侣。然而&#xff0c;面对市场上琳琅满目的特医食品&#xff0…

只要往前走,至少能到达自己所能做到的部分

很多说自己力不足的人&#xff0c;往往是中道而废&#xff0c;在通往目标的途中就失败了。 无论怎么力不足&#xff0c;只要往前走&#xff0c;至少也能到达自己所能做到的部分。 《刻意练习》有个原则&#xff1a;如果有人能做到一件事&#xff0c;其他人就都能做到。 &…

优维运营治理三件套:可用性x性能x容量管理

对于系统/应用运维人员&#xff0c;日常工作中需要保证系统/应用的可用性、稳定性和关注系统/应用的性能表现。为了帮助IT人员更好地管理和优化企业的系统和应用&#xff0c;我们引入了三大关键能力&#xff1a;可用性管理、性能管理和容量管理。这些能力不仅能够帮助IT人员发现…

【ai】blender4.1 安装插件

开源软件,所以资料充足插件及配置 下载插件插件是python开发的 编辑中的偏好设置 点击选中 点击一键切换中文英文 切换主题 插件源码

AI绘画SD下载安装教程,学习AI绘画软件必看(SD怎么安装,SD安装教程,安装stable diffusion软件必看)

大家好&#xff0c;我是设计师阿威 最近很火很有趋势的便是AI人工智能了&#xff0c;提到AI大家肯定都不陌生&#xff08;AIGC&#xff09;大家也很熟知&#xff0c;但是要问应用的工具有哪些肯定很多人说不出来几个&#xff0c;但是比较厉害的就是大众所认识的SD-stable diff…

力扣每日一题 6/14 动态规划+数组

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2786.访问数组中的位置使分数最大【中等】 题目&#xff1a; 给你一个下标…

JavaSE---类和对象(上)

1. 面向对象的初步认知 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。 面向对象是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。用面向对象…

如何用R语言ggplot2画高水平期刊散点图

文章目录 前言一、数据集二、ggplot2画图1、全部代码2、细节拆分1&#xff09;导包2&#xff09;创建图形对象3&#xff09;主题设置4&#xff09;轴设置5&#xff09;图例设置6&#xff09;散点颜色7&#xff09;保存图片 前言 一、数据集 数据下载链接见文章顶部 处理前的数据…

免杀笔记 ----> 后续更新安排

前一段时间&#xff0c;我疯狂更新了内网&#xff0c;本来想把NTLM-Relay给更上的&#xff0c;但是计划安排不允许了&#xff0c;之后后续再给大家进行深入的内网更新了&#xff01;&#xff01; &#xff1a;&#xff1a; 真不是我托更 嘻嘻嘻~~~ 说回正题&#xff0c;接下来…