路由传入请求

Routing incoming request

我正在尝试使用 Go 创建一个简单的 API,它根据提供的数据执行某些操作。 我正计划为此 API 提供 JSON 数据并从中获取详细信息以供进一步使用。

因为我试图提供 JSON 数据,所以我使用 gorilla/mux 创建路由,如下所示:

    router.HandleFunc("/msa/dom/perform-factory-reset?json={jsonData}", CallGet)
    log.Fatal(http.ListenAndServe(":8080", router))

但是在尝试到达终点时 http://localhost:8080/msa/dom/perform-factory-reset?json={"vrf":"ds","ip":"45","mac":"452","method":"gfd"} 我收到 404 page not found 错误。

因此,我尝试更改实现方式,使新路由完成:

router.HandleFunc("/msa/dom/perform-factory-reset/json={jsonData}", CallGet)

这非常有效,我能够执行所需的任务。谁能告诉我为什么会这样?

路由器是gorilla/mux吗?如果是这样,您不能像那样将查询参数添加到路径。你必须:

  router.Path("/msa/dom/perform-factory-reset").
 Queries("json","{jsonData}").HandlerFunc(CallGet)

如果是其他路由器,那么你可能仍然需要注册没有查询参数的路径,然后在处理程序中从请求中获取查询参数值。