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
相关文章:
Go语言框架路由Controller控制器设计思路gin路由根据控制器目录分层生成路由地址
Controller设计好处 框架设计用controller分请求路由层级,应用从app目录开始对应请求url路由地址,这样设计师方便开发时候通过请求地址层级快速定位接口方法对应的代码位置。 例如api接口请求路径为:http://localhost:8110/busines…...
突破编程_C++_设计模式(责任链模式)
1 责任链模式的概念 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许对象以链式的方式组织起来,以便对请求进行处理。这种模式为多个对象处理同一请求提供了一个灵活的机制,而无需在发送者和多…...
php开发100问?
什么是 PHP?PHP 是一种什么类型的语言?PHP 的优缺点是什么?如何在服务器上配置 PHP?PHP 中的变量是如何声明和使用的?如何在 PHP 中输出文本和变量?什么是 PHP 的数据类型?如何在 PHP 中实现条件…...

flink实战--Flink任务资源自动化优化
背景 在生产环境Flink任务资源是用户在实时平台端进行配置,用户本身对于实时任务具体配置多少资源经验较少,所以存在用户资源配置较多,但实际使用不到的情形。比如一个 Flink 任务实际上 4 个并发能够满足业务处理需求,结果用户配置了 16 个并发,这种情况会导致实时计算资…...
tsv文件在大数据技术栈里的应用场景
是的,\t 是指制表符(tab),它通常用作字段分隔符在 TSV(Tab-Separated Values)格式的文件中。TSV是一种简单的文本格式,它使用制表符来分隔每一列中的值,而每一行则代表一个数据记录。…...

vscode设置setting.json
{ // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detectIndentation": false, // 重新设定tabsize "editor.tabSize": 2, // #每次保存的时候自动格式化 // "editor.formatOnSave": true, // #每次保存的时候将代码按eslint格式…...

Docker的安装及镜像加速的配置
文章目录 一.切换到root二.卸载旧版docker三.配置docker的yum库四.安装Docker五.Docker的启动和验证六.配置Docker阿里云镜像加速(全程免费) 该文章文章演示在Linux系统中安装docker,Windows安装docker请参考以下文章 Windows系统中安装docker及镜像加速的配置 一…...
AIGC时代IT人的迷茫有解(1):从“商业画布”到“个人画布”
IT人的迷茫和心态调整 最近打开新闻,各种IT老大都在说“AIGC时代,只要会说话,人人都会具备程序员的能力”,身边也有很多程序员朋友也已经在用GPT类的产品编程了。随着AIGC的发展,除了程序员,可能很多职业都会被替代或…...

Qt/QML编程之路:openglwidget和倒车影像的切换(43)
关于如何实现一个基于OpenGL的3d 图形,这个有很多专门的介绍,我在开发中遇到了这么一个问题: 如何实现一个倒车影像的video显示与一个3D物体显示的切换,因为开窗在同样的一个位置,如果车子倒车启动,则需要将原本显示3D的地方切换为视频图像的显示。 class testOpenGl : …...
Spring 初学者遇到的问题
TagLibraryValidator Spring 实战 5.2 中有个表单需要在 jsp 中遍历数组,添加:<% taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c" %>,访问时发现有些问题: java.lang.NoClassDefFoundError…...

前端解决跨域问题( 6种方法 )
本专栏是汇集了一些HTML常常被遗忘的知识,这里算是温故而知新,往往这些零碎的知识点,在你开发中能起到炸惊效果。我们每个人都没有过目不忘,过久不忘的本事,就让这一点点知识慢慢渗透你的脑海。 本专栏的风格是力求简洁…...

Linux 理解进程
目录 一、基本概念 二、描述进程-PCB 1、task_struct-PCB的一种 2、task_ struct内容分类 三、组织进程 四、查看进程 1、ps指令 2、top命令 3、/proc文件系统 4、在/proc文件中查看指定进程 5、进程的工作目录 五、通过系统调用获取进程标示符 1、getpid()/get…...

鸿蒙App基础
基础说明 .1、应用模型 .1.1、构成要素 应用组件 应用组件是应用的基本组成单位,是应用的运行入口。用户启动、使用和退出应用过程中,应用组件会在不同的状态间切换,这些状态称为应用组件的生命周期。应用组件提供生命周期的回调函数&…...
算法部署优化工程师面试题整理
🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:C/C面试整理 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 目录 整体情况简介 高性能计算基础 AI 框架知识 算…...

C#,入门教程(26)——数据的基本概念与使用方法
上一篇: C#,入门教程(25)——注释(Comments)你会吗?看多图演示,学真正注释。https://blog.csdn.net/beijinghorn/article/details/124681888 本文所述的知识基本上适用于C/C,java等其他语言。 …...

加密与安全_PGP、OpenPGP和GPG加密通信协议
文章目录 PGPOpenPGPGPG工作原理工作流程用途案例说明过程 代码实现pom依赖PgpEncryptionUtilPgpDecryptionUtilCommonUtilsPgpEncryptionTest 小结 PGP PGP (Pretty Good Privacy) 是一种加密通信协议,用于保护电子邮件和文件的安全性和隐私。它通过使用加密、数字…...
Maven模块化最佳实践
一,模块化的原因及意义 模块化是一种将大型的软件系统拆分成相互独立的模块的方法。具有以下优势: 代码复用:不同的模块可以共享相同的代码。这样可以避免重复编写相同的代码,提高开发效率。 模块独立性:每个模块都可…...

嵌入式C语言中 #pragma once 的作用
1、#pragma once有什么作用? 为了避免同一个头文件被包含(include)多次,C/C中有两种宏实现方式: 一种是#ifndef方式; 另一种是#pragma once方式。 在能够支持这两种方式的编译器上,二者并没…...

spring-cloud-openfeign 3.0.0(对应spring boot 2.4.x之前版本)之前版本feign整合ribbon请求流程
在之前写的文章配置基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136060312 下图为自己整理的...

#数据结构 线性表的顺序存储
目录 每日文案 一、线性表的定义 二、线性表的操作 顺序表的存储结构 顺序表的初始化操作 判断顺序表是否为空表 将顺序表置为空表 计算顺序表中的元素个数 取出顺序表中的对应位置元素 取出对应数值的位序 在对应位置插入元素 将对应位置的元素删除 将顺序表中的数据…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...