Go语言 无法读取参数

vd8tlhqk  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(109)

我通过axios发送一个请求作为post,因为我需要发送一个body和params。然而,当它到达我的后端的参数不存在!

async getAll(page: number, pageSize: number, filter: IFilter): Promise<Course[]> {
    const res = await request.post<{ data: Course[]; metadata: 'none' }>("/v1/courses", {
        params: {
            page: page,
            pageSize: pageSize,
        },
        data: filter,
    });

    return res.data.data;
}

字符串
浏览器控制台中的网络选项卡

{params: {page: 1, pageSize: 6},…}
data: 
{all: true, beginner: false, intermediate: false, advanced: false, amqp: false, databases: false,…}
params: 
{page: 1, pageSize: 6}


片段

func (app *Courses) CoursesAllHandler(w http.ResponseWriter, r *http.Request) {
    ctx := context.Background()

    clog := log.GetLoggerFromContext(ctx)

    p := r.URL.Query().Get("page")
    ps := r.URL.Query().Get("pageSize")

    var filter Filter
    err := json.NewDecoder(r.Body).Decode(&filter)
    if err != nil {
        http.Error(w, "Failed to parse request body", http.StatusBadRequest)
        return
    }


对我来说,axios调用看起来是正确的,params方法也可以在后端获取它们。然而,当我查看网络选项卡并看到data:params时,我想知道是否需要更深入。所以我试着:

p := r.URL.Query().Get("data") <--- empty

type Filter struct {
    All          bool `json:"all"`
    Beginner     bool `json:"beginner"`
    Advanced     bool `json:"advanced"`
    Intermediate bool `json:"intermediate"`
    Go           bool `json:"go"`
}


任何建议将不胜感激。

  • 更新-
    请求转储
request, err := httputil.DumpRequest(r, true)
if err != nil {
    return
}

clog.Info(string(request))
(KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36\r\n\r\n{\"params\":{\"page\":1,\"pageSize\":6},\"data\":{\"all\":true,\"beginner\":false,\"intermediate\":false,\"advanced\":false,\"amqp\":false,\"databases\":false,\"docker\":false,\"gcp\":false,\"go\":false,\"grpc\":false,\"java\":false,\"mux\":false,\"serverless\":false,\"vue\":false,\"spring\":false}}"}
kq4fsx7k

kq4fsx7k1#

您为什么要查看r.URL.Query()来获取POST参数?您需要执行以下操作:

type Request struct {
    Params struct {
        Page int `json:"page"`
        PageSize int `json:"pageSize"`
    } `json:"params"`
    Data Filter `json:"data"`
}

var req Request

err := json.NewDecoder(r.Body).Decode(&req)

字符串

相关问题