【发布时间】:2019-12-05 13:38:48
【问题描述】:
以下是我正在尝试的
func TestCreteJob(t *testing.T) {
requestBody, err := json.Marshal(map[string]string{
"username": "u1",
"password": "p1",
})
if err != nil {
t.Errorf("Test Failed ")
}
res, err := http.Post("http://127.0.0.1:9090/job", "application/json", bytes.NewBuffer(requestBody))
if err != nil {
log.Fatal(err)
}
greeting, err := ioutil.ReadAll(res.Body)
res.Body.Close()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", greeting)
}
我的处理程序如下所示
func Handlers() *gin.Engine {
router := gin.Default()
// Sample API
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
router.POST("/job", func(c *gin.Context) {
if c.Request.Method == "POST" {
var u User
err := c.BindJSON(&u)
if err != nil {
c.AbortWithError(http.StatusBadRequest, err)
}
c.JSON(http.StatusOK, gin.H{
"user": u.Username,
"pass": u.Password,
})
}
})
return router
}
我已将对象定义为
type User struct {
Username string `json: abc`
Password string `json: password`
}
这应该会失败,因为输入没有'abc' 我是不是在这里做错了什么。
【问题讨论】:
-
如果您希望它失败,您首先必须为字段指定一些“绑定”验证规则。见github.com/gin-gonic/gin#model-binding-and-validation。例如
Username string `json:"abc" binding:"requried"`.