Go语言框架路由Controller控制器设计思路gin路由根据控制器目录分层生成路由地址

Controller设计好处

框架设计用controller分请求路由层级,应用从app目录开始对应请求url路由地址,这样设计师方便开发时候通过请求地址层级快速定位接口方法对应的代码位置。

例如api接口请求路径为:​​http://localhost:8110/​​business/user/account/getUserdata ,从地址我们可以指定这个接口的代码在 app目录下的business目录下user目录下account下文件名为account.go里函数名为GetUserdata。这样其他同事维护您的代码也能快速找的代码位置。不像其他Go框架路由手动配置产生路由与文件目录不对应,相关改一个接口找半天。

Controller设计思路

开发应用app目录下有个总controller.go控制器(应用控制器),app目录下(模块)每个文件夹如果需要路由自动加载就要有个controller.go控制器(模块控制器),然后再加载搭配总控制器中去。app下的目录文件夹加载自己目录下目录文件夹。模块是指大业务应用分类,比如后台分:admin后台管理、business业务后台管理、手机app接口、微信小程序等我们分别添加admin、admin、phoneapi、wxapp。详情在下面介绍。

1.应用控制器

   在应用业务目录app下添加一个总的控制器(controller.go)来引入app下模块的路径,例如引入admin、business模块。controller.go代码如下

  

package controller/**
* app路由引入口《引入模块控制器》
*
* 请把您使用包用 _ "gofly/app/home/XX"导入您编写的包 自动生成路由
* 不需要使用的模块则注释掉 例如home模块暂时用不到就注释掉,这样不占用资源,使用是取消注释即可。
* 路由规则:包路径“home/article” + 包中结构体“Cate”转小写+方法名(首字母转小写_ "gofly/app/business/datacenter"*/
import (_ "gofly/app/admin"_ "gofly/app/business"
)

这样admin和business下的控制器import的路径文件就会加载到路由中。

2.模块控制器

模块也分成多个业务,比如business业务后台可分文章article、用户user、测试test等时就在business目录下的controller.go添加article、user、test 路径目录,结果如下图:

 

business目录下的controller.go代码如下:

package controller/**
* 引入控制器
* 请把您使用包用 _ "gofly/app/home/XX"导入您编写的包 自动生成路由
* 不是使用则注释掉
* 路由规则:包路径“home/article” + 包中结构体“Cate”转小写+方法名(首字母转小写    _ "gofly/app/business/datacenter"即:http://xx.com/home/article/cate/get_list
*/
import (_ "gofly/app/business/article"// _ "gofly/app/business/test"_ "gofly/app/business/user"
)

如果不需要让路由加载test,则注释获取删除即可上面带// _ "gofly/app/business/test" 代码已经用//注释,路由就不会去加载test内部文件的方法。或者删除掉test文件及控制器路径。不删除代码是方便下次启用。

然后article,user这些业务块就不用添加controller.go控制器了,除非还需要问下分模块。业务块目录下就添加.go文件编辑业务代码了,系统自动加载业务块内的方法到路由中,无需手动导入路由。具体如何开发业务代码 请到下面这篇了解:

基于gin框架根据文件目录层级和文件名自动生成路由_gin 自动生成路由-CSDN博客文章浏览阅读1k次,点赞18次,收藏29次。本文主要介绍如何及,比如新增一个添加文章分类(在cate.go直接添加一个func函数-单个接口)、和新增一个文章评论的功能(新添加一个.go文件多个接口),我们用两个例子说明这个中情况开发。_gin 自动生成路由https://blog.csdn.net/qq_23731311/article/details/136329656?spm=1001.2014.3001.5501

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

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

相关文章

C#,老鼠迷宫问题的回溯法求解(Rat in a Maze)算法与源代码

1 老鼠迷宫问题 迷宫中的老鼠,作为另一个可以使用回溯解决的示例问题。 迷宫以块的NN二进制矩阵给出,其中源块是最左上方的块,即迷宫[0][0],目标块是最右下方的块,即迷宫[N-1][N-1]。老鼠从源头开始,必须到达目的地。老鼠只能朝两个方向移动:向前和向下。 在迷宫矩阵…

如何在Linux使用docker安装Plik并实现无公网ip上传下载内网存储的文件资源

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默&…

数据结构小记【Python/C++版】——散列表篇

一,基础概念 散列表,英文名是hash table,又叫哈希表。 散列表通常使用顺序表来存储集合元素,集合元素以一种很分散的分布方式存储在顺序表中。 散列表是一个键值对(key-item)的组合,由键(key)和元素值(item)组成。键…

Go语言数据结构(二)堆/优先队列

文章目录 1. container中定义的heap2. heap的使用示例3. 刷lc应用堆的示例 更多内容以及其他Go常用数据结构的实现在这里,感谢Star:https://github.com/acezsq/Data_Structure_Golang 1. container中定义的heap 在golang中的"container/heap"…

Java详解:单列 | 双列集合 | Collections类

○ 前言: 在开发实践中,我们需要一些能够动态增长长度的容器来保存我们的数据,java中为了解决数据存储单一的情况,java中就提供了不同结构的集合类,可以让我们根据不同的场景进行数据存储的选择,如Java中提…

985硕的4家大厂实习与校招经历专题分享(part1)

先简单介绍一下我的个人经历: 985硕士24届毕业生,实验室方向:CV深度学习 就业:工程-java后端 关注大模型相关技术发展 校招offer: 阿里巴巴 字节跳动 等10 研究生期间独立发了一篇二区SCI 实习经历:字节 阿里 京东 B站 (只看大厂…

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-4、线条平滑曲面(修改颜色)去除无效点

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

深入解析Java内存模型

一、背景 并发编程本质问题是:CPU、内存以及IO三者之间的速度差异。CPU速度快于内存、内存访问速度又远远快于IO,根据木桶理论,程序性能取决于最慢的操作,即IO操作。这样会出现CPU和内存交互时,CPU性能无法被充分利用…

QT 配置https 5.12.2 64位kitsMINGW_64

将 D:\QT5.12.2\Tools\mingw730_64\opt\bin 中的libeay32.dll 和 ssleay32.dll 复制到D:\QT5.12。2\5.12.2\msvc2017_64\bin中 尝试了各种各样的方法,直接这一步就解决了

Python批量提取Word文档表格数据

在大数据处理与信息抽取领域中,Word文档是各类机构和个人普遍采用的一种信息存储格式,其中包含了大量的结构化和半结构化数据,如各类报告、调查问卷结果、项目计划等。这些文档中的表格往往承载了关键的数据信息,如统计数据、项目…

555经典电路

1、555介绍: 555 定时器是一种模拟和数字功能相结合的中规模集成器件。一般用双极性工艺制作的称为 555,用 CMOS 工艺制作的称为 7555,除单定时器外,还有对应的双定时器 556/7556。555 定时器的电源电压范围宽,可在 4…

蓝牙系列七:开源蓝牙协议栈BTStack数据处理(Wireshark抓包分析)

继续蓝牙系列的研究。 在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的。这个main函数做了某些初始化之后,最终会调用到应用程序提供的btst…

Qt Creator常见问题解决方法

Qt Creator源文件重命名的正确方法 光改文件名是不够的,还要在.pro文件中的SOURCES中把名字改成之后的。 中文乱码(字符集设置) 菜单栏-工具-选项-设置为utf-8

DHCP中继实验(华为)

思科设备参考:DHCP中继实验(思科) 一,技术简介 DHCP中继,可以实现在不同子网和物理网段之间处理和转发DHCP信息的功能。如果DHCP客户机与DHCP服务器在同一个物理网段,则客户机可以正确地获得动态分配的IP…

表单进阶(3)-上传文件和隐藏字段

上传文件&#xff1a;<input type"file"> 隐藏字段&#xff1a;<input type"hidden" name"" id"" value"带给后端的信息"> 禁用disabled&#xff1a;<button disabled"disabled">注册</bu…

Vue2利用创建a标签实现下载本地静态文件到本地电脑上的功能

最近PC项目遇到一个需求&#xff0c;那就是需要前端下载前端代码包里的前端文件到本地&#xff0c;并且可以给下载下来的文件名指定任意的文件名&#xff0c;如下图所示&#xff0c;在前端代码里public里的statics里有个静态文件zswj.pem&#xff0c;页面上有个下载按钮&#x…

扁平数据转树形结构,让数据管理更清晰

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Python学习:基础语法

版本查看 python --version编码 默认情况下&#xff0c;Python 3 源码文件以 UTF-8 编码&#xff0c;所有字符串都是 unicode 字符串。 特殊情况下&#xff0c;也可以为源码文件指定不同的编码&#xff1a; # -*- coding: cp-1252 -*-标识符 第一个字符必须是字母表中字母或…

sentinel prometheus指标收集及资源规则正则表达式实现

sentinel 支持 prometheus 收集指标 实现原理 在 sentinel-extension 模块下&#xff0c;新增 sentinel-prometheus-metric-exporter 模块。依赖Prometheus 提供的 simpleclient 和 simpleclient_httpserver 来实现 exporter。 依赖 simpleclient 主要是为了实现自定义Collect…

数学建模-模糊性综合评价模型

中医药是中国传统文化的重要组成部分&#xff0c;凝聚了中华民族千百年来智慧的结晶。作为中医的发源地&#xff0c;中国政府一直致力于保护、发展和推广中医药&#xff0c;采取了一系列政策措施[]。目前&#xff0c;中国面临着老龄化日益加剧&#xff0c;老年人群中慢性疾病和…