如何在Mux / Golang中创建动态路由?

时间:2017-08-24 06:30:46

标签: go mux

我试图弄清楚如何创建一个动态路由,在其中我可以查询我的struct的某些部分。 例如,假设我有以下结构。

type News struct {
     Id int64 `json:"id"`
     Category string `json:"category"`
     ImageUrl string `json:"image_url"`
     Title string `json:"title"`
     Description string `json:"description"`
     Source string `json:"source"`
}

现在,我将如何创建一条路线,例如......

本地主机:1234 /新闻标题=" sometitle"&安培;源=" somesource

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用问题中的查询参数,并将任何已知字段作为条件来缩小搜索范围。

实际搜索这些字段的方式取决于数据存储的位置/方式 - 你没有在你的问题中指明这一点,所以我不知道你是否要查询MongoDB,一个SQL DB,在记忆中映射......

您可以按如下方式迭代查询参数:

http.HandleFunc("/news", func(w http.ResponseWriter, r *http.Request) {
  params := r.URL.Query()

  for field, values := range params {
      value := values[len(values)-1] // the last given value of this type
      // gradually build your query using field / value
  }
})

如果您提供有关数据存储方式的更多信息,我可以为您提供更具体的答案,以帮助您构建查询并检索匹配的记录。