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

GoLang学习更方便,一文在手,面试我有
GoLang面试 | GoLang面试 | GoLang面试


文章目录

前言

基于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

演示


回复 golang,获取学习路线思维导图、加入GO计划学习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JavaPub-rodert

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值