
php小编苹果为您介绍一种简便的方法来使用Golang Gin框架获取cookie和解析JSON数据。Golang是一种强大的编程语言,而Gin则是一个流行的Web框架,其结合起来可以轻松地处理网络请求和数据解析。在这篇文章中,我们将探讨如何使用Gin框架来获取cookie并解析其中的JSON数据,让您能够更加灵活地处理网络请求和数据处理。无论您是Golang新手还是有经验的开发者,都会从本文中获得有用的技巧和知识。让我们开始吧!
我使用[电子邮件受保护]
尝试从请求中获取 cookie
Cookie 示例:
立即学习“go语言免费学习笔记(深入)”;
key={"ckey": "cvalue"}
代码:
token, err := c.Request.Cookie("key")
返回错误
http:命名的 cookie 不存在
但是没有花括号,工作正常
Cookie 示例:
立即学习“go语言免费学习笔记(深入)”;
key=cvalue
接收
token = "key=cvalue"
出现此问题的原因是 cookie 值格式。
让我们看看 net/http 中的这些代码
65bd267fe7床该语句用于去掉字符串开头和结尾的 " 。
{"ckey": "cvalue"} 此字符串中的引号无法删除。
然后它调用另一个函数,该函数是一个循环,迭代每个字符并检查该字符是否为有效字节。
for i := 0; i < len(raw); i++ {
if !validcookievaluebyte(raw[i]) {
return "", false
}
}validcookievaluebyte实现
func validcookievaluebyte(b byte) bool {
return 0x20 <= b && b < 0x7f && b != '"' && b != ';' && b != '\'
}并且检查在此处失败。因为我们在{"ckey": "cvalue"}
"
让我们检查一下示例代码
func main() {
router := gin.default()
router.get("/get-cookie", func(c *gin.context) {
cookie, err := c.request.cookie("key")
if err != nil {
c.string(http.statusbadrequest, err.error())
return
}
c.string(http.statusok, fmt.sprintf("token = key=%v", cookie.value))
})
router.run(":8080")
}这会失败
curl --request get
--url http://localhost:8080/get-cookie
--cookie key='{"ckey": "cvalue"}'但这会成功
curl --request get
--url http://localhost:8080/get-cookie
--cookie key='{ckey: cvalue}'我们可以使用http.cookie将cookie设置为json
val := `{"ckey": "cvalue"}`
cookie := &http.Cookie{
Name: "key",
Value: val,
}
http.SetCookie(c.Writer, cookie)setcookie 将在保存值之前删除 "。
以上就是golang gin获取cookie json的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号