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

演示

目录
相关文章
|
4天前
|
中间件 Go
go语言后端开发学习(三)——基于validator包实现接口校验
go语言后端开发学习(三)——基于validator包实现接口校验
|
4天前
|
存储 Go
go语言进阶篇——接口
go语言进阶篇——接口
|
16天前
|
Go
掌握Go语言:Go语言接口精解,实现多态性与灵活性的利器(31)
掌握Go语言:Go语言接口精解,实现多态性与灵活性的利器(31)
|
19天前
|
存储 Go iOS开发
Go 语言接口
Go 语言接口
16 2
|
1月前
|
程序员 Go
Golang Gin 框架入门介绍(二)
Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 的基本使用方式,今天我们详细看一看 Gin 在接口定义和参数解析方面的内容。 正文 一、定义 GET, POST, PUT, PATCH, DELETE 和 OPTIONS 的接口
194 0
|
Go API
Golang Gin 框架入门介绍(一)
前言 Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。我司的 Web 后端服务基本是都是基于 Gin 开发的。 正文 安装 首次使用 Gin 框架时,需要先进行安装,命令如下: go get -u github.com/gin-gonic/gin
366 0
Golang Gin 框架入门介绍(一)
|
17小时前
|
存储 中间件 Go
在go语言服务中封装路由和示例
【6月更文挑战第23天】本文介绍golang后端按协议处理、中间件(一次性与每次请求执行)划分、以及服务架构Controller、Logic/Service、DAO/Repository和Routers划分。代码仓库在GitHub上提供。使用框架简化了交互和处理。后续章节深入探讨服务构建。
18 5
在go语言服务中封装路由和示例
|
1天前
|
安全 测试技术 Go
Go语言在高并发场景下的应用
在当今互联网高速发展的时代,高并发已成为众多应用系统面临的核心问题。本文探讨了Go语言在高并发场景下的优势,并通过具体实例展示了其在实际应用中的效果和性能表现。
|
1天前
|
Unix Go 开发者
探索Go语言并发模型:原理与实践
本文深入探讨了Go语言的并发模型,包括其设计原理、Goroutine和Channel的基本使用,以及如何在实际项目中高效地应用这些概念来提高程序的性能和可维护性。