iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Gin 框架中的自定义验证
  • 640
分享到

Gin 框架中的自定义验证

2024-04-05 00:04:16 640人浏览 泡泡鱼
摘要

“纵有疾风来,人生不言弃”,这句话送给正在学习golang的朋友们,也希望在阅读本文《Gin 框架中的自定义验证》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有

“纵有疾风来,人生不言弃”,这句话送给正在学习golang的朋友们,也希望在阅读本文《Gin 框架中的自定义验证》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我有一个用golang gin框架编写的应用程序。我想编写一个中间件来自定义所有错误消息,特别是在 bindJSON 的情况下。

这是中间件:

func errors() gin.handlerfunc {
    return func(c *gin.context) {
        c.next()
        // only run if there are some errors to handle
        if len(c.errors) > 0 {
            for _, e := range c.errors {
                // find out what type of error it is
                switch e.type {
                case gin.errortypepublic:
                    // only output public errors if nothing has been written yet
                    if !c.writer.written() {
                        c.json(c.writer.status(), gin.h{"error": e.error()})
                    }
                case gin.errortypebind:
                    errs := e.err.(validator.validationerrors)
                    list := make(map[int]string)

                    fmt.println(errs)
                    for field, err := range errs {
                        list[field] = validationerrortotext(err)
                    }
                    // make sure we maintain the preset response status
                    status := Http.statusbadrequest
                    if c.writer.status() != http.statusok {
                        status = c.writer.status()
                    }
                    c.json(status, gin.h{"errors": list})

                default:
                    c.json(http.statusbadrequest, gin.h{"errors": c.errors.json()})
                }

            }
            // if there was no public or bind error, display default 500 message
            if !c.writer.written() {
                c.json(http.statusinternalservererror, gin.h{"error": errorinternalerror.error()})
            }
        }
    }
}

功能非常简单,它获取所有 gin 错误并根据错误类型执行某些操作!当我尝试将错误映射到验证错误时,问题出在 gin.errortypebind 的情况下:e.err.(validator.validationerrors)。 我遇到了这个错误

接口转换:错误是validator.validationerrors,而不是validator.validationerrors(来自不同包的类型)

这是导入的包的列表:

import (
    "errors"
    "fmt"
    "net/http"

    "GitHub.com/gin-gonic/gin"
    "gopkg.in/go-playground/validator.v9"
)


解决方案


看着 source code of gin,我看到了这个:

import (
    "gopkg.in/go-playground/validator.v8"
)

但是你正在使用 "gopkg.in/go-演示/validator.v9"

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~

您可能感兴趣的文档:

--结束END--

本文标题: Gin 框架中的自定义验证

本文链接: https://www.lsjlt.com/news/596786.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Gin 框架中的自定义验证
    “纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《Gin 框架中的自定义验证》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有...
    99+
    2024-04-05
  • Go Gin:创建通用自定义验证器
    php小编鱼仔为大家带来一款实用的开发工具——Go Gin框架中的通用自定义验证器。作为一款高性能的Web框架,Go Gin提供了强大的验证器功能,帮助开发者在处理用户输入时保证数据的...
    99+
    2024-02-10
  • golang中gin框架接入jwt使用token验证身份
    目录jwt 流程: 1.token 工具类 2. 使用该中间件 3. controller部分代码 jwt jwt的原理和session有点相像,其目的是为了解决rest api中...
    99+
    2024-04-02
  • gin框架中使用JWT的定义需求及解析
    目录什么是JWT?为什么需要JWT?生成JWT和解析JWT定义需求生成JWT解析JWT在gin框架中使用JWT什么是JWT? JWT全称JSON Web Token是一种跨域认证解决...
    99+
    2024-04-02
  • golang中gin框架接入jwt如何使用token验证身份
    本篇内容介绍了“golang中gin框架接入jwt如何使用token验证身份”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!jwtjwt的原理...
    99+
    2023-06-22
  • Android自定义验证码输入框的方法实例
    目录实践过程总结实践过程 前面我们学完了EditText和TextView两个组件,但是,光学不练没意思。 所以今天我们趁热打铁,利用两个组件实现个自定义验证码输入框。 思路前瞻:...
    99+
    2024-04-02
  • Golang 验证器自定义枚举验证规则
    php小编小新今天给大家介绍一款强大的Golang验证器——自定义枚举验证规则。随着Golang的流行,越来越多的开发者开始使用它来构建高效、可靠的应用程序。而验证器是其中一个重要的工...
    99+
    2024-02-09
  • 详解Python中的自定义密码验证
    目录在测试:nut_and_bolt:️之前试验contains_characterTestContainsCharacter字符试验is_valid_sizeTestIsValid...
    99+
    2024-04-02
  • go中跨域自定义验证的问题
    在Go语言开发中,跨域请求是一个常见的问题。跨域请求是指在浏览器中,通过JavaScript代码向不同域名下的服务器发送请求。由于浏览器的同源策略限制,跨域请求默认是不被允许的。然而,...
    99+
    2024-02-12
    go语言
  • Python中如何自定义密码验证
    这篇文章主要介绍“Python中如何自定义密码验证”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中如何自定义密码验证”文章能帮助大家解决问题。下面是重构后的代码:from st...
    99+
    2023-06-29
  • hyperf 自定义验证器的使用
    引入组件包 composer require hyperf/validation 添加中间键 您需要为使用到验证器组件的 Server 在 config/autoload/middlewares.php 配置文件加上一个全局中间件 Hype...
    99+
    2023-09-04
    php java 数据库
  • vue表单验证自定义验证规则详解
    本文实例为大家分享了vue表单验证自定义验证规则,供大家参考,具体内容如下 这是公司里Vue+Element UI的项目。写的验证规则放图: 样式代码: <div class...
    99+
    2024-04-02
  • uniapp自定义验证码输入框并隐藏光标
    目录一. 前言二. 实现思路三. 代码实现四. 过程中遇到的问题一. 前言 先看下使用场景效果图: 点击输入框唤起键盘,蓝框就相当于input的光标,验证码输入错误或者不符合格式要求...
    99+
    2023-02-22
    uniapp验证码输入框 uniapp验证码
  • golang怎么使用Gin框架实现短信验证码功能
    golang怎么使用Gin框架实现短信验证码功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用json配置文件// 配置文件 "...
    99+
    2023-06-20
  • Qt实现自定义验证码输入框控件的方法
    目录前言UI布局:页面样式初始化:功能实现:前言 本文实现了自定义的验证码输入框控件。控件包括图标、输入框、获取验证码按钮、验证码获取倒计时标签。支持鼠标点击获取验证码按钮后开始显示...
    99+
    2024-04-02
  • Laravel如何自定义验证对象
    这篇文章主要介绍“Laravel如何自定义验证对象”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel如何自定义验证对象”文章能帮助大家解决问题。Laravel 5.5 将提供一个全新的自定...
    99+
    2023-07-04
  • DreamWeaver CS3中如何实现SPRY的自定义验证
    这篇文章将为大家详细讲解有关DreamWeaver CS3中如何实现SPRY的自定义验证,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下:<span id="sprytextfiel...
    99+
    2023-06-08
  • 使用自定义函数验证 MySQL 中的日期
    让我们创建一个自定义函数来验证 MySQL 中的日期 -mysql> set global log_bin_trust_function_creators=1; Query OK, 0 rows affected (0.03 sec)...
    99+
    2023-10-22
  • PHP最简单自定义自己的框架view使用引入smarty(8)--自定义的框架完成
    1、实现效果。引入smarty, 实现assign和 display 2、下载smarty,创建缓存目录cache和扩展extend  点击下面查看具体下载使用,下载改名后放到extend  PHP之Smarty使用以及框架displa...
    99+
    2023-09-03
    php 开发语言 数据库 sql
  • 自定义 Laravel 表单验证规则 – 通过 API 来验证
    我们所有的人都知道 Laravel 提供了一个非常方便的方式来验证表单,使用表格验证。但是你有没有发现自己需要使用第三方的 API 来验证一个表单字段?我最近在一个项目中就遇到了这个需求。我为一个第三方服务保存了一个 API 密钥,并被要求...
    99+
    2023-08-07
    api 验证表单 Laravel
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作