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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 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

演示

目录
打赏
0
2
2
0
137
分享
相关文章
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
Go语言中的加密和解密是如何实现的?
Go语言通过标准库中的`crypto`包提供丰富的加密和解密功能,包括对称加密(如AES)、非对称加密(如RSA、ECDSA)及散列函数(如SHA256)。`encoding/base64`包则用于Base64编码与解码。开发者可根据需求选择合适的算法和密钥,使用这些包进行加密操作。示例代码展示了如何使用`crypto/aes`包实现对称加密。加密和解密操作涉及敏感数据处理,需格外注意安全性。
47 14
Go nil 空结构体 空接口有什么区别?
本文介绍了Go语言中的`nil`、空结构体和空接口的区别。`nil`是预定义的零值变量,适用于指针、管道等类型;空结构体大小为0,多个空结构体实例指向同一地址;空接口由`_type`和`data`字段组成,仅当两者均为`nil`时,空接口才为`nil`。
Go nil 空结构体 空接口有什么区别?
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
221 1
|
4月前
|
RSA加密算法详解与Python和Go实现
RSA加密算法详解与Python和Go实现
329 1
|
5月前
|
Go to Learn Go之接口
Go to Learn Go之接口
41 7
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
Python 和 Go 实现 AES 加密算法的技术详解
Python 和 Go 实现 AES 加密算法的技术详解
202 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等