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动态代理&…

GnuCash macos 设置中文的方法

一、环境: macos 13.6.1 gnucash 5.4-2 二、查看系统默认语言: defaults read -g AppleLocale 三、设置gnucash应用语言: defaults write $(mdls -name kMDItemCFBundleIdentifier -raw /Applications/GnuCash.app) AppleLanguages "…

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

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

LINQ-123 题外篇之IEnumerable和IQueryable

这两天又学习了2篇&#xff0c;记录下&#xff1a; IEnumerable and IQueryable in C# - Dot Net Tutorials Differences Between IEnumerable and IQueryable in C# - Dot Net Tutorials 实现接口IEnumerable和IQueryable是使用LINQ查询的必要条件。 关于 IEnumerable<…

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

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

SSM+VUE的增删改查

目录 后端代码 mapper.xml controller 前端代码 api》action.js 后端代码 mapper.xml <!--模糊查询--><select id"selectLike" parameterType"com.zking.spboot.model.Book" resultMap"BaseResultMap">select * from t_book&l…

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;当新拉取到的数据大于配置的内存缓存区时&…

【数据结构和算法】无限集中的最小数字

其他系列文章导航 Java基础合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、总结 前言 这是力扣的2336题&#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;标题字体、…

类,封装,包

类&#xff0c;封装&#xff0c;包 一级目录1&#xff1a;下面代码的运行结果是&#xff08;&#xff09;2&#xff1a;以下哪项说法是正确的&#xff1f;3&#xff1a;以下代码在编译和运行过程中会出现什么情况4&#xff1a;在JAVA中&#xff0c;假设A有构造方法A(int a)&…

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

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

代码随想录 738. 单调递增的数字

题目 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9 示例 2: 输入: n 1234 输出: 1234 示例 3: 输…

第九节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…

Python多线程使用(二)

使用多个线程的时候容易遇到一个场景&#xff1a;多个线程处理一份数据 使用多线程的时候同时处理一份数据&#xff0c;在threading中提供了一个方法&#xff1a;线程锁 Demo&#xff1a;下订单 现在有多笔订单下单&#xff0c;库存减少 from threading import Thread from t…