Когда я реализовал запросы на подкачку с помощью среды Gin, я обнаружил, что JSON, переданный в Postman, никогда не был успешно привязан к PageSize и PageNum типа INT. (Shouldbind не имеет ошибки)
Вот ссылка на изображение: https://i.imgur.com/fbkgonI.png
Код:
API:
func GetAllTask(c *gin.Context) {
var getAllService service.GetAllService
err := c.ShouldBind(&getAllService)
if err != nil {
c.JSON(http.StatusBadRequest,gin.H{
"status":-1,
"msg":"json解析失败",
"error":err.Error(),
})
return
}
claims, err := util.ParserToken(c.GetHeader("token"))
if err != nil {
c.JSON(http.StatusBadRequest,gin.H{
"status":-1,
"msg":"token解析失败",
"error":err.Error(),
})
return
}
res := getAllService.GetAllTask(claims.Uid)
c.JSON(http.StatusOK,res)
}
услуга:
type GetAllService struct {
PageSize int `json:"page_size" form:"page_size" default:"10"`
PageNum int `json:"page_num" form:"page_num" default:"1"`
//KeyWord string `form:"key_word"`
Desc bool `json:"desc" form:"desc"`
}
Тело запроса JSON в почтальоне:
{
"page_size":2,
"page_num":1,
"desc":false
}
Пожалуйста, помогите мне. Спасибо!
🤔 А знаете ли вы, что...
Go (или Golang) - это язык программирования, разработанный в Google.
Спасибо, BlackGreen. Это было легкомысленно с моей стороны. Я должен изменить Get to POST в маршруте.
Здесь:
Изменить task.GET("/getall",api.GetAllTask)
на task.POST("/getall",api.GetAllTask)
Или оставьте task.GET("/getall",api.GetAllTask)
, просто измените URL-адрес в почтальоне на localhost:8080/api/task/getall?page_size=2&page_num=2
.