首页 > 其他分享 >flaskapi 路由管理APIRouter

flaskapi 路由管理APIRouter

时间:2024-08-13 18:28:51浏览次数:6  
标签:__ APIRouter flaskapi app user import cms 路由

前言

  开发一个应用程序或API,不会将所有的代码都放到main.py文件中。Flask 使用蓝图(BluePrint)来管理路由,FastAPI 提供了一个类似的工具APIRouter。

路由管理

1、fastapi 项目目录层级

 

2、api/cms/user.py 定义 API 路由和处理函数。实例化  APIRouter 类 ,参数 prefix 添加路由前缀,tags 添加接口文档分类。

 prefix 和 tags 这俩个参数也可以在注册路由的时候定义。

from fastapi import APIRouter


user = APIRouter()
# user = APIRouter(prefix='/ai', tags=['user'])

@user.get('/test')
async def test():
    return {'message': 'test'}

@user.post('/dev')
async def dev():
    return {'message': 'dev'}

 

3、在 main.py 模块,注册 api/cms/user.py 里的 user 对象

from api.user import user
from fastapi import FastAPI
import uvicorn

app = FastAPI()


@app.get("/home")
async def get():
    return {'message':'OK'}

# 也可以在这里 定义 prefix 和 tags
app.include_router(user,prefix='/ai', tags=['user'])
# 注册user对象
# app.include_router(user)


if __name__ == "__main__":
    uvicorn.run(app='main:app', host="0.0.0.0", log_config='./uvicorn_config.json', port=8000)

 

4、路由也可以单独写在routers文件夹(routers/cms.py),好处是项目层级清晰,可读性强,路由都存放一个地方,方便管理

from fastapi import APIRouter
from api.cms.user import user


cms = APIRouter()
cms.include_router(user, prefix='/ai', tags=['user'])

 routers/__init__.py 定义注册路由

from .cms import cms
from fastapi import FastAPI

# 注册路由
def register_router(app: FastAPI):
    app.include_router(cms)
    # app.include_router(cms, prefix='/ai', tags=['user'])

main.py 调用注册路由方法

from routers import register_router
from fastapi import FastAPI
import uvicorn

app = FastAPI()


@app.get("/home")
async def get():
    return {'message':'OK'}


# 调用注册路由方法
register_router(app)


if __name__ == "__main__":
    uvicorn.run(app='main:app', host="0.0.0.0", log_config='./uvicorn_config.json', port=8000)

 

然后启动服务

swagger文档: http://127.0.0.1:8000/docs  

redoc文档:http://127.0.0.1:8000/redoc

标签:__,APIRouter,flaskapi,app,user,import,cms,路由
From: https://www.cnblogs.com/shenh/p/17478654.html

相关文章

  • 使用 navigateTo 实现灵活的路由导航
    title:使用navigateTo实现灵活的路由导航date:2024/8/13updated:2024/8/13author:cmdragonexcerpt:摘要:本文详细介绍Nuxt.js中的navigateTo函数,包括基本用法、在路由中间件中使用、导航到外部URL和新标签页打开链接的方法,以及参数详解和注意事项,展示了该函数......
  • 网关路由-路由属性
    ♥️作者:小宋1021......
  • React Router 6 (React路由) 最详细教程
    ReactRouter6(React路由)最详细教程蒋川 2022-03-29阅读 5 分钟3 ReactRouter 经历多个版本的发展,现在已经到了 ReactRouter6。虽然网络上写React-Router路由本身的教程很多,但真正讲到React-Router6的并不多。同时因为第6版引......
  • 从零开发ts装饰器管理koa路由
    从零开发ts装饰器管理koa路由超人鸭关注IP属地:广东0.3252022.05.3118:18:44字数4,882阅读1,518前言两年前刚学ts,当时搭了个简单的koa的demo,介绍了如何用装饰器管理koa的路由:TS装饰器初体验,用装饰器管理koa接口但是当时还只是demo学习,并没有真正在公司的项目中使用......
  • Windows平台Hyper-V下使用iKuai作为主路由实现网口桥接
    Windows平台Hyper-V下使用iKuai作为主路由实现网口桥接问题背景在使用iKuai作为主路由时,可能会遇到后添加的虚拟端口下的设备无法联网的问题,这可能是iKuai的一个bug。解决方案以下是解决Windows平台Hyper-V下iKuai主路由网口桥接问题的步骤:确定主要网卡:观察并确定网桥使用的......
  • 思科路由器的DHCP配置3
    #路由技术基础##任务三路由器的DHCP配置3##1为路由器设置主机名称和接口IP地址Router(config)#hostnameRouter-ARouter-A(config)#intg0/0Router-A(config-if)#ipadd192.168.2.1255.255.255.0Router-A(config-if)#noshutdown#2DHCP服务器的配置Router-A(config......
  • 软路由常用术语
    常用术语软路由:直接使用的PC硬件,在构成上相比硬路由具有大得多的可定制化的优势,可以使用更高算力的X86架构的CPU,加比硬路由大的多的内存等等软路由使用的系统(基于Linux系统)OpenWrtiKuaiPadavan(老毛子)固件我们把这些专门为路由器设置的系统称为固件广告拦截网游......
  • 为什么动态路由刷新之后路由消失,以及解决措施
    为什么动态路由刷新之后路由消失因为我们路由是动态的,一开始路由中是没有的,所以是存在内存中,页面刷新之后,所有的页面就会初始化,内存中的路由也就会丢失解决措施在next代码中加入next({path:to.fullPath});作用没有next({path:to.fullPath})的......
  • 10.动态路由绑定怎么做
    为什么要动态路由绑定因为,如果我们的导航栏没有这个权限,输入对应网址,一样可以获取对应的页面,为了解决这个问题,有两种解决方案,一种是动态路由绑定(导航有多少个,就有多少个路由,在路由修改之前,先进行一个导航路由的加载和路由的动态绑定,然后看是否有这个路由,有就跳转)......
  • vue3中piniaPluginPersistedstate解决动态路由刷新空白问题
    总结:使用了回调函数来防止持久化数据前就渲染页面,导致刷新空白1.Store里的代码(**这里主要就是在addNewRoute写了回调callback**)addNewRoute(menuList,()=>{//重新渲染router.push({path:'/home/individual'})});import{defineStore}from"pinia";import......