GOLAND搭建GIN框架以及基础框架搭建

创建GO环境文件夹
在这里插入图片描述
终端输入安装GIN

go get -u github.com/gin-gonic/gin

如果遇到超时错误

package golang.org/x/net/html: unrecognized import path "golang.org/x/net/html": https fetch: Get "https://golang.org/x/net/html?go-get=1": dial tcp 142.250.66.113:443: connectex: A connection attempt failed because the connecte

在终端重新输入配置代理

 go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,directgo mod init "项目名称自己的"
//安装MySQL驱动
go get -u gorm.io/driver/mysql
go get -u github.com/jinzhu/gorm最后输入
go get -u github.com/gin-gonic/gin

显示在这里插入图片描述
代表成功下载观看文件夹出现go.mod文件
在这里插入图片描述

开始配置基础的Web开发框架
新建main在这里插入图片描述
添加配置在这里插入图片描述

基础的项目结构
swagger依赖
在Gin框架中使用Swagger可以通过gin-swagger这个库来实现。你可以通过以下步骤来安装gin-swagger并集成Swagger:

.使用go get命令安装gin-swagger:

go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files

在终端输入swag init产生docs文件
在这里插入图片描述

我这里带大家完成一个基础的登录业务

创建common文件夹配置相关请求头以及请求状态

ApiResponseEnum.go文件配置相关的请求头

package APItype ApiResponseEnum stringconst (AIREADY_EXISTS   ApiResponseEnum = "-4:密码重复"SUCCESS          ApiResponseEnum = "0:成功"ERROR_PARAM      ApiResponseEnum = "-2:参数错误"ERROR_DATA_EMPTY ApiResponseEnum = "-3:无数据"FAIL             ApiResponseEnum = "-1:失败"
)func (a ApiResponseEnum) GetCode() string {codeMap := map[ApiResponseEnum]string{AIREADY_EXISTS:   "-4",SUCCESS:          "0",ERROR_PARAM:      "-2",ERROR_DATA_EMPTY: "-3",FAIL:             "-1",}return codeMap[a]
}
func (a ApiResponseEnum) GetName() string {codeMsgMap := map[ApiResponseEnum]string{AIREADY_EXISTS:   "密码重复",SUCCESS:          "成功",ERROR_PARAM:      "参数错误",ERROR_DATA_EMPTY: "无数据",FAIL:             "失败",}return codeMsgMap[a]
}

ApiResponseObject获取请求状态

package APItype ApiResponseObject struct {ErrorCode string      `json:"errorCode"`ErrorMsg  string      `json:"errorMsg"`Data      interface{} `json:"data"`
}func (response *ApiResponseObject) GetErrorCode() string {return response.ErrorCode
}func (response *ApiResponseObject) SetErrorCode(errorCode string) {response.ErrorCode = errorCode
}func (response *ApiResponseObject) GetErrorMsg() string {return response.ErrorMsg
}func (response *ApiResponseObject) SetErrorMsg(errorMsg string) {response.ErrorMsg = errorMsg
}func (response *ApiResponseObject) GetData() interface{} {return response.Data
}func (response *ApiResponseObject) SetData(data interface{}) {response.Data = data
}

HttpClientTool配置请求接口

package APIconst LOGIN string =  "/login"

controllers 发布接口文件夹

AbstractApiController.go数据处理文件

package controllerspackageimport (API "YV/common""github.com/gin-gonic/gin""net/http"
)func ReponseJSON(errorCode string, errorMsg string, resData interface{}) API.ApiResponseObject {apiResponseObject := API.ApiResponseObject{}apiResponseObject.SetData(resData)apiResponseObject.SetErrorMsg(errorMsg)apiResponseObject.SetErrorCode(errorCode)return apiResponseObject
}// BindJSONData 判断是否有参数
func BindJSONData(ctx *gin.Context) (map[string]string, error) {var requestData map[string]stringerr := ctx.BindJSON(&requestData)if err != nil {ctx.JSON(http.StatusUnprocessableEntity, ReponseJSON(API.FAIL.GetCode(), API.FAIL.GetName(), err))return nil, err}return requestData, nil
}// ModifyData 判断是否修改成功
func ModifyData(ctx *gin.Context, Status int, error error) bool {if Status == 1 {ctx.JSON(http.StatusNotFound, ReponseJSON(API.SUCCESS.GetCode(), API.SUCCESS.GetName(), error))return false} else {ctx.JSON(http.StatusOK, ReponseJSON(API.FAIL.GetCode(), API.FAIL.GetName(), Status))return true}
}

根据项目要求创建相应的文件我这里创建LOGIN文件等其他配置完成在写

在这里插入图片描述

model数据库配置以及增删改查

请按我这样创建文件夹
在这里插入图片描述
V1代表当前测试库
在v1中创建core.go文件

package V1import ("fmt"
)var dsn stringfunc LV1() string {// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情username := "root"                        //账号password := "root"                   //密码host := ""                   //数据库地123456址,可以是Ip或者域名port := 3306                              //数据库端口Dbname := "" //数据库名timeout := "10s"                          //连接超时,10秒//拼接下dsn参数, dsn格式可以参考上面的语法,这里使用Sprintf动态拼接dsn参数,因为一般数据库连接参数,我们都是保存在配置文件里面,需要从配置文件加载参数,然后拼接dsn。dsn = fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local&timeout=%s", username, password, host, port, Dbname, timeout)return dsn
}

下班了上班在更未完待续
在这里插入图片描述

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

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

相关文章

KubeShark: Kubernetes的Wireshark

Wireshark可以帮助我们抓取并分析网络数据包,理解网络中发生的事情,那是否有工具可以帮助我们理解在K8S集群中发生的事情,帮助排查集群故障,Kubeshark就是这样的工具。原文: KubeShark: Wireshark for Kubernetes[1] 简介 Wiresha…

【动态代理详解】

动态代理 知道什么是动态代理以及动态代理能干什么就可以 代理的概述 什么是动态代理 ​ 使用jdk的反射机制,创建对象的能力, 创建的是代理类的对象。 动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理&…

【Oracle】数据库登陆错误:ORA-28000:the account is locked解决方法

问题描述 在连接Oracle数据库的时候出现了ORA-28000:the account is locked报错,登录账号被锁定,出现这种情况就需要将被锁定用户解锁。 解决方法 解锁方法就是通过用system账号登录数据库,然后修改被锁定账户状态,具体如下图所示…

51爱心流水灯32灯炫酷代码

源代码摘自远眺883的文章,大佬是30个灯的,感兴趣的铁汁们可以去看看哦~(已取得原作者的许可):基于STC89C51单片机设计的心形流水灯软件代码部分_单片机流水灯代码_远眺883的博客-CSDN博客 由于博主是个小菜鸡&#xff…

selenium+python

selenium 八大查找元素 from selenium import webdriver from selenium.webdriver.common.by import By# 创建一个 WebDriver 实例 driver webdriver.Chrome()# 打开网页 driver.get("https://www.baidu.com/")# 使用 find_element 方法查找元素 element driver.…

springboot 整合 Spring Security 上篇

1.创建springBoot 项目工程(spring6.0的底层、JDK17) 1.添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>配置完成启动访问controller会出现登录…

prometheus部署及与grafana结合应用

一、prometheus 介绍 prometheus server 是 Prometheus组件中的核心部分&#xff0c;负责实现对监控数据的获取&#xff0c;存储以及查询。它会定期从静态配置的监控目标或者基于服务发现自动配置的自标中进行拉取数据&#xff0c;当新拉取到的数据大于配置的内存缓存区时&…

绘制彩色正多边形-第11届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第10讲。 绘制彩色正多边形…

论文解读--Visual Lane Tracking and Prediction for Autonomous Vehicles

自动驾驶汽车视觉车道线跟踪和预测 摘要 我们提出了一种用于自动驾驶汽车跟踪水平道路车道标记位置的可视化方法。我们的方法是基于预测滤波的。预测步骤估计在每个新的图像帧中期望的车道标记位置。它也是基于汽车的运动学模型和嵌入式测程传感器产生的信息。使用适当准备的测…

弱网模拟工具

一、背景 一个人晚上在家通过 Wi-Fi 上网&#xff0c;在线电影播放基本流畅&#xff0c;可一旦在晚间用网高峰期打视频电话就画面糊&#xff0c;这时不仅可能带宽受限了&#xff0c;还可能有较高的丢包率。与有线网络通信相比&#xff0c;无线网络通信受环境影响会更大&#x…

【Java Web学习笔记】 1 - HTML入门

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/html 零、网页的组成 HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息&#xff0c;可以包含文字、图片视频等。 CSS样式是表现。就像网页的外衣。比如&#xff0c;标题字体、…

树基本概念+前中后序遍历二叉树

&#x1f308;一、树的基本概念 ☀️1.树的定义&#xff1a;树是一种非线性结构&#xff0c;看起来像一棵倒挂的树&#xff0c;根朝上&#xff0c;而叶朝下。 ☀️2.相关术语 1.根节点&#xff1a;图中的A&#xff0c;无前驱结点 2.叶节点&#xff08;终端节点&#xff09;&a…

第九节HarmonyOS 常用基础组件4-Button

一、Button Button组件主要用来响应点击操作&#xff0c;可以包含子组件。 示例代码&#xff1a; Entry Component struct Index {build() {Row() {Column() {Button(确定, { type: ButtonType.Capsule, stateEffect: true }).width(90%).height(40).fontSize(16).fontWeigh…

Java类的初始化顺序

类初始化顺序遵循以下三个原则&#xff08;优先级依次递减&#xff09; 1、静态对象&#xff08;变量&#xff09;优先于非静态对象&#xff08;变量&#xff09;初始化&#xff0c;其中静态对象&#xff08;变量&#xff09;只初始化一次&#xff0c;而非静态对象&…

【海思SS528 | VO】MPP媒体处理软件V5.0 | 视频输出模块——学习笔记

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

谈谈MYSQL索引

基本介绍 索引是帮助MySQL高效获取数据的数据结构&#xff0c;主要是用来提高数据检索的效率&#xff0c;降低数据库的IO成本&#xff0c;同时通过索引列对数据进行排序&#xff0c;降低数据排序的成本&#xff0c;也能降低了CPU的消耗。 通俗来说, 索引就相当于一本书的目录,…

WebGL笔记:图形缩放的原理和实现

缩放 1 &#xff09;原理 缩放可以理解为对向量长度的改变&#xff0c;或者对向量坐标分量的同步缩放 如下图&#xff0c;比如让向量OA 收缩到点B的位置&#xff0c;也就是从OA变成OB&#xff0c;缩放了一半 2 &#xff09;公式 已知 点A的位置是(ax,ay,az)点A基于原点內缩了…

Redis 入门、基础。(五种基本类型使用场景)

文章目录 1. 概况1.1 认识 NoSQL1.1.1 查询方式1.1.2 事务1.1.3 总结 2. 认识 Redis4. Redis 常见命令4.1 Redis 数据结构介绍4.2 Redis 通用命令4.3 Redis 命令之 String 命令4.4 Redis 命令的层级结构4.5 Redis 命令之 Hash 命令4.6 Redis 命令之 List 命令4.7 set 唯一不排序…

SparkSQL远程调试(IDEA)

启动Intellij IDEA&#xff0c;打开spark源码项目&#xff0c;配置远程调试 Run->Edit Configuration 启动远程spark-sql spark-sql --verbose --driver-java-options "-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address5005"参数说明&#xff1a;…

css实现简单的抽奖动画效果和旋转效果,还有春联效果

使用css的animation和transform和transition可以实现简单的图片放大缩小&#xff0c;旋转&#xff0c;位移的效果&#xff0c;由此可以延伸的动画效果还是挺多的&#xff0c;比如图片慢慢放大&#xff0c;图片慢慢旋转并放大&#xff0c;图片慢慢变化位置等等&#xff0c; 抽奖…