go 基于gin编写encode、decode、base64加密接口

简介: go 基于gin编写encode、decode、base64加密接口

前言

基于gin编写encode、decode、base64加密接口,代码仓库:https://github.com/Rodert/go-demo/tree/main/go_gin_demo , 如果无法下载留言邮箱。

代码

注释很详细,入门级教程代码

package main

import (
  "encoding/base64"
  "fmt"
  "log"
  "net/http"

  "github.com/gin-gonic/gin"
)

func main() {
  router := gin.Default()
  //ping test
  router.GET("/ping", func(c *gin.Context) {
    c.JSON(200, gin.H{
      "message": "pong",
      "encode":  "/encode",
      "decode":  "/edecode",
    })
  })

  // router.GET("/someGet", getting)
  // router.POST("/somePost", posting)
  // router.PUT("/somePut", putting)
  // router.DELETE("/someDelete", deleting)
  // router.PATCH("/somePatch", patching)
  // router.HEAD("/someHead", head)
  // router.OPTIONS("/someOptions", options)

  //test
  router.GET("/encode", func(c *gin.Context) {
    q, ok := c.GetQuery("q")
    if ok {
      c.JSON(http.StatusOK, gin.H{
        "你的输入是:": q,
        "你的编码是:": my_encode(q),
      })
    } else {
      c.JSON(http.StatusOK, gin.H{
        "你的输入不合法": "输入合法字符",
      })
    }
  })

  //dis var。路由配置,处理字符串。
  v1 := router.Group("/dis_var")
  {
    v1.GET("encode", my_encode_router)
    v1.GET("decode", my_decode_router)
    v1.GET("base64", my_base64_router)
  }

  //upload file,performability。上传文件并存储到指定位置
  router.MaxMultipartMemory = 8 << 20 // 8 MiB
  router.POST("/upload", func(c *gin.Context) {
    // single file
    file, _ := c.FormFile("file")
    log.Println(file.Filename)
    // Upload the file to specific dst.
    c.SaveUploadedFile(file, "D://1.png")
    c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
  })

  router.Run(":8090")
}

//encode编码
func my_encode_router(c *gin.Context) {
  q, ok := c.GetQuery("q")
  if ok {
    c.JSON(http.StatusOK, gin.H{
      "你的输入是:": q,
      "编码是:":   my_encode(q),
    })
  } else {
    c.JSON(http.StatusOK, gin.H{
      "你的输入不合法": "输入合法字符",
    })
  }
}

//decode字符串解码
func my_decode_router(c *gin.Context) {
  q, ok := c.GetQuery("q")
  if ok {
    c.JSON(http.StatusOK, gin.H{
      "你的输入是:": q,
      "解码是:":   my_decode(q),
    })
  } else {
    c.JSON(http.StatusOK, gin.H{
      "你的输入不合法": "输入合法字符",
    })
  }
}

//base64加密
func my_base64_router(c *gin.Context) {
  q, ok := c.GetQuery("q")
  if ok {
    c.JSON(http.StatusOK, gin.H{
      "你的输入是:":        q,
      "base64加密后结果是:": my_base64(q),
    })
  } else {
    c.JSON(http.StatusOK, gin.H{
      "你的输入不合法": "输入合法字符",
    })
  }
}

func my_encode(s string) string {
  input := []byte(s)

  encodeString := base64.StdEncoding.EncodeToString(input)
  // fmt.Println(encodeString)
  return encodeString
}

func my_decode(s string) []byte {

  // 对上面的编码结果进行base64解码
  decodeBytes, err := base64.StdEncoding.DecodeString(s)
  if err != nil {
    log.Fatalln(err)
  }
  // fmt.Println(string(decodeBytes))
  return decodeBytes
}

func my_base64(s string) []byte {
  input := []byte(s)

  // 如果要用在url中,需要使用URLEncoding
  uEnc := base64.URLEncoding.EncodeToString([]byte(input))
  // fmt.Println(uEnc)

  uDec, err := base64.URLEncoding.DecodeString(uEnc)
  if err != nil {
    log.Fatalln(err)
  }
  return uDec
}

go run gindemo.go

演示

目录
相关文章
|
1月前
|
算法 测试技术 Go
go-dongle v1.1.7 发布,新增 SM4 国密分组对称加密算法支持
`dongle` 是一款轻量级、语义化、开发者友好的 Golang 密码库,100% 单元测试覆盖,获 2024 年 GVP 与 G-Star 双项荣誉。支持 SM4 国密算法,提供标准及流式处理,优化读取位置重置,提升安全性与易用性。文档齐全,开源免费,欢迎 Star!
171 0
|
1月前
|
算法 测试技术 Go
go-dongle v1.1.7 发布,新增 SM4 国密分组对称加密算法支持
`dongle` 是一款轻量级、语义化、开发者友好的 Golang 密码库,100% 单元测试覆盖,获 2024 年 GVP 与 G-Star 双项荣誉。支持 SM4 国密算法,提供标准及流式处理,优化读取位置重置,提升安全性与易用性。文档齐全,开源免费,欢迎 Star!
174 0
|
2月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
275 86
|
6月前
|
存储 Go
Go语言之接口与多态 -《Go语言实战指南》
Go 语言中的接口是实现多态的核心机制,通过一组方法签名定义行为。任何类型只要实现接口的所有方法即视为实现该接口,无需显式声明。本文从接口定义、使用、底层机制、组合、动态行为到工厂模式全面解析其特性与应用,帮助理解 Go 的面向接口编程思想及注意事项(如 `nil` 陷阱)。
203 22
|
1月前
|
Java 编译器 Go
【Golang】(5)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
好烦好烦好烦!你是否还在为弄不懂Go中的泛型和接口而烦恼?是否还在苦恼思考迭代器的运行方式和意义?本篇文章将带你了解Go的接口与泛型,还有迭代器的使用,附送类型断言的解释
161 3
|
4月前
|
人工智能 负载均衡 监控
使用 Go 和 Gin 实现高可用负载均衡代理服务器
本文基于Go语言和Gin框架,实现了一个企业级负载均衡代理服务器,支持动态路由、健康检查、会话保持等功能。具备高可用性与高性能,单节点支持100k+ QPS,延迟达亚毫秒级,并提供完整的压力测试方案与优化建议。
157 7
|
5月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
6月前
|
存储 JSON Go
Go语言之空接口与类型断言
本文介绍了 Go 语言中空接口(`interface{}`)和类型断言的核心概念及其应用。空接口可存储任意类型数据,适用于通用函数、动态数据结构与 JSON 解析等场景;类型断言用于将接口变量还原为具体类型,推荐使用带 `ok` 的写法以避免程序崩溃。此外,文章通过示例讲解了 `type switch` 类型判断与 JSON 处理技巧,并总结了空接口的注意事项,强调滥用可能导致类型安全性降低。内容深入浅出,帮助开发者灵活运用这些特性。
190 15
|
11月前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
6月前
|
Go
Go语言接口的定义与实现
Go 语言的接口提供了一种灵活的多态机制,支持隐式实现和抽象编程。本文介绍了接口的基本定义、实现方式、空接口的使用、类型断言以及接口组合等核心概念,并探讨了接口与 nil 的关系及应用场景。通过示例代码详细说明了如何利用接口提升代码的可扩展性和可测试性,总结了接口的关键特性及其在依赖注入、规范定义和多态调用中的重要作用。
276 14