2017-08-24 123 views
0

我想弄清楚如何创建一个动态路由,我可以查询我的结构的某些部分。例如,假设我有以下结构。如何创建Mux/Golang中动态的路由?

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

您可以使用查询参数在您的问题中,并处理任何已知字段作为标准来缩小您的搜索范围

您实际上的方式这些字段取决于数据存储的位置/方式 - 你没有在你的问题中指定这个,所以我不知道你是否要查询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 
    } 
}) 

如果你提供有关数据如何存储更多的信息,我可以给你一个更具体的答案,帮助你建立你的查询和检索匹配记录。

+0

非常感谢你的回复,这真的很有帮助。目前,我正在使用MySQL数据库并使用MySQL驱动程序设置适当的连接。 – JustPlainGoat

+0

我最终找到了你的帮助,谢谢! – JustPlainGoat