
gin
文章平均质量分 80
tekin
激情,创新,进取!
展开
-
golang gin框架中创建自定义中间件的2种方式总结 - func(*gin.Context)方式和闭包函数方式定义gin中间件
gin框架自定义中间件常用的方式,1.定义一个参数为*gin.Context的函数或者方法。定义的方法就是创建一个 参数类型为 gin.HandlerFunc 【 他的原型定义为 type HandlerFunc func(*Context) 】的中间件,如: func XxxFoo(c *gin.Context) {}注意: 虽然这种方式定义的中间件和入参和路由处理函数的定义是一样的, 但是他们的用途和业务处理方式是有区别的, 在中间件中我们可以通过 c.Next() 方法继续后面的请求, 2....原创 2024-08-14 11:25:49 · 1386 阅读 · 1 评论 -
gin框架中的中断请求c.Abort()方法的作用和使用细节说明
在gin框架中,请求处理链即 handlers HandlersChain 他是一个类型定义为: type HandlerFunc类型的切片, 即 type HandlersChain []HandlerFunc。我们在路由中注册的路由地址和HandlerFunc 都被加入到了handlers中,Abort()方法的调用就会中断当前挂起的HandlerFunc。中断请求Abort()方法定义参考这里将gin上下文中的索引index设置为abortIndex 他的值为63。原创 2024-08-13 14:52:42 · 779 阅读 · 0 评论 -
vue axios http网络请求头包含非 CORS 白名单的请求标头 也被称作“简单标头”时, post, put,path,delete等请求CORS问题总结与解决方法
在我们从前端发送网络请求时所携带的标头非这些标头“Accept, Accept-Language, Content-Language, Content-Type, Range” 时即“非简单标头”。 当我们发送的请求头包含的请求头不是CORS 白名单的请求标头 时浏览器就会在请求发起之前自动发送一个预检请求。 只有在预检请求的结果OK后才会发起真正的请求。预检请求官方文档https://developer.mozilla.org/zh-CN/docs/Glossary/Preflight_request结果原创 2024-08-13 11:04:39 · 953 阅读 · 0 评论 -
gin框架 自定义404错误页面,自定义500等服务端异常,业务异常,根据不同异常类型显示不同的异常页面方法 整理
gin框架中的自定义异常页面实际上就是一个路由绑定和异常捕获和异常类型断言的过程,其中404异常他就是一个无路由异常,需要使用路由对象的NoRoute方法绑定对应的异常处理函数, 其他类型的异常需要使用 中间件 +defer + recover()的方式来处理不同类型的异常。 在gin 框架中还有一个NoMethod的路由异常,这个异常在Engine.HandleMethodNotAllowed = true时触发,使用方法和NoRoute一样,绑定一个HandlerFunc函数即可。原创 2024-08-08 07:00:00 · 1586 阅读 · 0 评论 -
gin框架路由处理方法Handle,中间件,9种请求方式(GET, POST, PUT,DELETE... CONNECT, TRACE)使用方法,gin路由接口IRoutes解析
gin框架的路由支持GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, CONNECT, TRACE这9种请求方式, 请求方式名称必须是大写, 这9种请求方式在gin内部都是通过handle方法来处理, gin框架中的路由处理函数和中间件的定义实际上就是定义一个入参类型为*gin.Context 的函数或者方法。 gin在中间件中通过调用 gin.Context对象中的.Next()方法来继续处理后续请求,通过调用 .Abort() 方法来中断后续请求,通过使用r原创 2024-08-07 18:02:17 · 1064 阅读 · 0 评论 -
用于gin框架的CORS中间件,解决身份凭证和通配符不能同时设置问题,可同时配置附带身份凭证的请求和*通配符,chrome插件CORS跨域请求通配符
用于gin框架的CORS中间件(当然,用在其他的框架和语言中相应的Header头设置和配置信息和应用原理都是一样的),解决Access-Control-Allow-Credentialstrue身份凭证和 Access-Control-Allow-Origin: | * 通配符不能同时设置问题,可同时配置附带身份凭证的请求和*通配符,以及在chrome插件中访问远程CORS跨域请求通配符问题等原创 2024-08-07 12:17:28 · 642 阅读 · 0 评论 -
http跨域网络请求中的CORS(跨源资源共享) 那些事 -- HTTP跨域请求, chrome插件跨域请求使用详解, origin格式,origin通配符等
本文详细讲解了什么是CORS,以及如何使用CORS,包含如何在服务端相应请求中设置CORS的相关请求头,以及origin的格式,通配符,http跨域请求, chrome插件跨域请求的详细设置方法等。原创 2024-08-07 11:15:43 · 2080 阅读 · 0 评论 -
gin框架中断当前网络请求代码执行的 2种方法总结 - panic, Abort() , return
在go语言的开发中,我们要中断当前代码执行 可以使用 return 语句来中断当前代码的执行。 return 语句中断的是当前函数的代码执行。 在gin框架中,如果要中断当前的网络请求,有2种方法。原创 2024-07-30 17:58:46 · 383 阅读 · 0 评论 -
gin框架 POST 请求参数绑定 JSON数据ShouldBind 使用注意事项 - 结构体必须定义json标签
gin框架中的请求数据绑定ShouldBind可将前端发送的数据直接绑定到自定义结构体, 但是在POST发送JSON 数据时 需要注意 因为gin框架在底层绑定数据时使用了json对参数进行了反序列化, 所以我们在自定义的结构体中,如果前端发送的JSON中的字段和自定义结构体的字段的命名方式不一致时必须要增加json标签。 否则无法获取数据原创 2024-07-18 21:15:24 · 1284 阅读 · 0 评论 -
gin框架 任意类型 any /interface{}请求参数接收和解析笔记
/ 定义一个结构体,用来接收任意类型的id数据Ids any `form:"ids"` // 这里的tag form:"ids" 是gin框架中用来接收表单名为ids的数据的接收任意类型的参数的核心就是数据类型的转换,这里应用了go语言里面数据类型转换的3大法宝,反射,类型断言和类型获取。原创 2024-07-18 13:44:16 · 561 阅读 · 0 评论 -
js vue axios post 数组请求参数获取转换, 后端go参数解析(gin框架)全流程示例
这里将请求参数id统一转换为数组, 因为这里的请求参数id, 有可能是一个原始值 , 也有肯能是一个数组。//url可用性检测// 这里的参数id有可能是一个数组,也有可能是一个值,// 这里在最终发送的时候都转换为数组来传递// 创建一个数组arr = id;// 如果入参是一个数组 Proxy(Array) 则将他赋值给 arr} else {// 将参数id放入到数组中data: {ids:arr});原创 2024-07-18 12:51:36 · 1474 阅读 · 0 评论 -
gin框架 gin.Context中的Abort方法使用注意事项 - gin框架中立刻中断当前请求的方法
gin框架上下文中的Abort序列方法(Abort,AbortWithStatus,AbortWithStatusJSON,AbortWithError)他们都不会立刻终止当前的请求,在中间件中调用Abort方法后中间件中的后续的代码会被继续执行,但是中间件后面的handler控制器方法会被终止执行(在中间件中调用Abort以确保不会调用此请求的其余处理程序)原创 2024-07-02 19:43:33 · 1194 阅读 · 0 评论 -
gin框架中form, uri 2种类型的数据绑定到自定义结构体, 绑定数据默认值设置方法, 时间格式绑定和格式设置 详解
要将请求form中的数据【包含,get, post,请求头HEADER中的数据等】绑定到自定义的结构体中, form类型的数据绑定使用tag form来进行标记绑定关系。结构体定义Page int `json:"page" form:"page,default=1"` // 这里将表单中的form 和这里的Page字段进行绑定,如果表单中没有page字段则设置默认值为1。原创 2024-07-01 15:24:15 · 1178 阅读 · 0 评论 -
全网最详细的 gin框架请求数据绑定Bind 源码解析 -- 帮助你全面了解gin框架的请求数据绑定原理和方法
在gin框架中,我们可以将多种请求数据(json, form,uri,header等)直接绑定到我们定义的结构体,底层是通过反射方式获取我们定义在结构体上面的tag来实现请求数据到我们的结构体数据的绑定的。 在gin的底层有2大体系的数据绑定一个是Bind,是个是ShouldBind, 下面我们就从数据绑定入口开始一层层的解开gin数据绑定的神秘面纱!原创 2024-07-01 12:08:00 · 1328 阅读 · 0 评论 -
gin框架中使用session的详细步骤和示例
gin框架中的Session是通过中间件Middleware的方式来使用的, 官方的gin-contrib提供了session包(通过对github.com/gorilla/sessions的二次封装实现),我们可以直接使用即可, session支持的存储方式有如下多种:go get -u github.com/gin-contrib/sessions2. 选择合适的存储方式要使用session 首先需要根据我们的业务场景选择一个合适的存储方式,单体应用建议memstore内存存储方式, 分布式原创 2024-06-26 10:43:41 · 972 阅读 · 0 评论 -
go框架gin自定义和增强*gin.Context的方法 --使用闭包函数将自定义Context handler转换为 gin.HandlerFunc
gin自定义和增强*gin.Context的方法: 自定义一个本地结构体,然后以匿名方式继承*gin.Context*gin.Context // 匿名继承 *gin.Context上面为自定义的结构体 XContext里面以匿名方式继承了 *gin.Context, 这样我们就可以在本地将我们需要增强的功能绑定到XContext对象上了,在使用的时候我们可以通过我们自定义的结构体访问gin.Context中的所有可内容,同时也可以访问我们自定义的方法。原创 2024-06-26 09:34:40 · 877 阅读 · 0 评论