英文:
How to create a dynamic route to query portions of a 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"`
}
现在,我要如何创建一个路由,例如
localhost:1234/news?title="sometitle"&source="somesource"
英文:
I am trying to figure out how to create a dynamic route in which I can query certain portions of my struct.
For example, say I have the following 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"`
}
Now, how would I create a route such as
localhost:1234/news?title="sometitle"&source="somesource
答案1
得分: 2
你可以像在你的问题中那样使用查询参数,并将任何已知字段作为条件来缩小搜索范围。
实际搜索这些字段的方式取决于数据存储的位置/方式-你在问题中没有指定这一点,所以我不知道你是要查询MongoDB、SQL数据库、内存中的映射等等。
你可以按照以下方式迭代查询参数:
http.HandleFunc("/news", func(w http.ResponseWriter, r *http.Request) {
params := r.URL.Query()
for field, values := range params {
value := values[len(values)-1] // 这种类型的最后一个给定值
// 使用字段/值逐渐构建查询
}
})
如果你提供关于数据存储方式的更多信息,我可以给你一个更具体的答案,帮助你构建查询并检索匹配的记录。
英文:
You can just use query parameters like in your question and handle any known fields as criteria to narrow your search.
The way you actually search these fields depends on where / how your data is stored- you didn't specify this in your question, so I don't know if you're going to query MongoDB, an SQL DB, a map in memory...
You can iterate over your query parameters as follows:
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
}
})
If you provide more information about how your data is stored, I can give you a more specific answer to help you build your query and retrieve the matching records.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论