gpt4 book ai didi

http - Golang,如何使用结构通过 HTTP 编写 JSON 响应?

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:55 28 4
gpt4 key购买 nike

目标:

使用 github.com/neelance/graphql-go starwars 示例,我正在尝试向我的 ReactJS 客户端编写 JSON 响应。结构的东西对我来说是全新的,顺便说一句,Golang 也是如此。

问题:

为了获得对以下示例 GraphQL 查询的适当响应,data 变量应该是什么?

query clientQuery {
character(id: 1000) {
name
appearsIn
}
}

附加信息:

根据我在这里和那里阅读的内容,data 一定是某种结构。我在示例中有很多可用的结构(请参阅下面的 starwars.go)。

需要修改的代码(main.go):

package main

import (
"encoding/json"
"log"
"net/http"

"github.com/neelance/graphql-go"
"github.com/neelance/graphql-go/example/starwars"
"github.com/neelance/graphql-go/relay"
)

var schema *graphql.Schema

func init() {
schema = graphql.MustParseSchema(starwars.Schema, &starwars.Resolver{})
}

func main() {

port := ":8080"
log.Printf(`GraphQL server starting up on http://localhost%v`, port)

http.Handle("/query", &relay.Handler{Schema: schema})

http.HandleFunc("/graphql", func(w http.ResponseWriter, r *http.Request) {

// THIS IS SUPER WRONG, data should be something
// like data := starwars.Resolver{} or so?
data := `{"data":{"character":{"name":"Luke Skywalker","appearsIn":["NEWHOPE","EMPIRE","JEDI"]}}}`

w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusCreated)
json.NewEncoder(w).Encode(data)
})

log.Fatal(http.ListenAndServe(port, nil))
}

引用文献 1 - starwars.go

引用文献 2 - relay.go

最佳答案

你的问题有点困惑。 您询问的是 JSON,但您想要的响应不是有效的 JSON 格式: 您似乎添加了不相关的 GraphQL 信息。

我不确定这是关于 GraphQL 还是 JSON 的问题。无论如何,我会尽力回答。

您的示例 data 如下所示,因此我假设这是您要生成的结果:

data := `{"data":{"character":{"name":"Luke Skywalker","appearsIn":["NEWHOPE","EMPIRE","JEDI"]}}}`

让 Go 生成正确的 JSON 的一种简洁方法是创建包含数据的结构:

type Response struct {
Data Data `json:"data"`
}

type Data struct {
Character Character `json:"characer"`
}

type Character struct {
Name string `json:"name"`
AppearsIn []string `json:"appearsIn"`
}

然后你可以这样定义数据:

    data := Response{
Data: Data{
Character: Character{
Name: "Luke Skywalker",
AppearsIn: []string{"NEWHOPE", "EMPIRE", "JEDI"},
},
},
}

也许这个问题不是关于 JSON 而不是 GraphQL。在这种情况下,您需要澄清您的问题。

引用资料

关于http - Golang,如何使用结构通过 HTTP 编写 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485360/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com