绑定请求方法POST



我在绑定请求时遇到问题,因为有很多参数,所以我使用了包含param的struct。

package api
import (
"github.com/labstack/echo/v4"
"net/http"
"trains-api/domain/models"
"trains-api/domain/services"
)
type reqCreate struct {
RequestNotifi  models.ResquestCreateNotifi  
}
func CreateNotification (c echo.Context) error {
req := reqCreate{}
if err := c.Bind(req); err != nil {
return c.JSON(http.StatusNotFound, err)
}
}
package models
type RequestCreateNotifi struct {
Name_param1     string    `db:"Name_param1"`
Name_param2     string    `db:"Name_param2"`
....
Name_param_n    string    `db:"Name_paramN"`
}

if err := c.Bind(req); err != nil错误

r = {interface {} | string } "reflect: Elem of invalid type"

您需要设置模型中每个字段的JSON等价物,如下所示:

package models
type RequestCreateNotifi struct {
Name_param1     string    `json:"name_param1" db:"Name_param1"`
Name_param2     string    `json:"name_param2" db:"Name_param2"`
....
Name_param_n    string    `json:"name_param_n" db:"Name_param n"`
}

这个json字段指定如何在请求中表示字段,以便将其绑定到正确的值。

您需要添加指针

req := reqCreate{}
if err := c.Bind(&req); err != nil {
return c.JSON(http.StatusNotFound, err)
}

不幸的是,根据问题#1670,出于安全原因,您无法使用Post方法自动绑定查询参数,方法是使用echo。QueryParamsBinder

type Query struct {
Param1 string `query:"param1"`
Param2 string `query:"param2"`
}
...
query := new(Query)
err := echo.QueryParamsBinder(ctx).String("param1", &query.Param1).String("param2", &query.Param2).BindError()
...

最新更新