路由传入请求

时间:2019-08-22 14:33:51

标签: rest go mux

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

由于我试图提供JSON数据,因此我使用大猩猩/多路复用创建了路由,如下所示:

    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)

这绝对正常,我能够执行所需的任务。有人可以告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

路由器是大猩猩/多路复用器吗?如果是这样,则无法像这样将查询参数添加到路径。您必须:

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

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