根据几个最佳实践文档,最好判断输入数据是否为UTF-8.
在我的项目中,我使用Gin进行验证,因此使用Go-Platform/验证器进行验证.有一个"ascii"验证器,但没有"utf-8"验证器.
我找到了https://pkg.go.dev/unicode/utf8#ValidString个,我想知道用它判断输入是否会有任何帮助,或者是给定的,因为Go本身在内部使用Unicode?
下面是一个例子:
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
type User struct {
Name string `json:"name" binding:"required,alphanum"`
}
func main() {
r := gin.Default()
r.POST("/user", createUserHandler)
r.Run()
}
func createUserHandler(c *gin.Context) {
var newUser User
err := c.ShouldBindJSON(&newUser)
if err != nil {
c.AbortWithError(http.StatusBadRequest, err)
return
}
c.Status(http.StatusCreated)
}
是否确保在调用c.ShouldBindJson之后,newUser
中的名称是UTF-8编码的?用utf8.ValidString判断name
有什么好处吗?