首页 > 解决方案 > 如何在 Golang 服务器中通过 ID 参数返回特定的 JSON 数据

问题描述

我正在做一个由我自己负责的项目。

我正在尝试设置一个 Golang 服务器,该服务器根据用户传递的参数(ID)显示来自远程 json 文件的 JSON 数据。

我可以找到很多指南来展示如何使用 json API 中的所有数据,但我不知道如何将参数传递给函数,因此它只返回所需的数据。

这是我到目前为止所拥有的:

设置基本服务器和路由

func main() {

    //Initialises basic router and endpoints
    r := mux.NewRouter()
    r.HandleFunc("/", home).Methods("GET")
    r.HandleFunc("/games/all", getAll).Methods("GET")
    r.HandleFunc("/games/{id}", getGame).Methods("POST")
    r.HandleFunc("/games/report", getReport).Methods("GET")

    fmt.Println("Listening on port 8080")
    http.ListenAndServe(":8080", r)

}

这是我发送 GET 请求的 getAll 方法(现在使用 pokedex api,直到我托管我的 json 文件)。

func getAll(w http.ResponseWriter, r *http.Request) {
    response, err := http.Get("http://pokeapi.co/api/v2/pokedex/kanto/")

    if err != nil {
        fmt.Print(err.Error())
        os.Exit(1)
    }

    responseData, err := ioutil.ReadAll(response.Body)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(responseData))
}

还为数据构建了结构。但是我一辈子都无法找到一种方法来传递参数来执行 getGame 方法来处理该路线。请,如果有人能指出我正确的方向。

标签: jsonhttpgogorilla

解决方案


推荐阅读