js版
GraphQL在 NodeJS 服务端中使用最多
安装graphql-yoga
:
npm install graphql-yoga
新建index.js
:
const {GraphQLServer} = require("graphql-yoga") const server = new GraphQLServer({ typeDefs: ` type Query { hello(name:String):String! } `, resolvers: { Query: { hello: (parent, {name}, ctx) => { return `${name},你好!`; } } } }) server.start({ port: 4600 }, ({port}) => { console.log(`服务器已启动,请访问: http://localhost:${port}`); })
node index.js 运行
点击链接 进入playground:
query{ hello(name:"dashen") }
Golang版
graphql-go/graphql项目的demo:
(文档点此)
package main import ( "encoding/json" "fmt" "log" "github.com/graphql-go/graphql" ) func main() { // Schema fields := graphql.Fields{ "hello": &graphql.Field{ Type: graphql.String, Resolve: func(p graphql.ResolveParams) (interface{}, error) { return "world", nil }, }, } rootQuery := graphql.ObjectConfig{Name: "RootQuery", Fields: fields} schemaConfig := graphql.SchemaConfig{Query: graphql.NewObject(rootQuery)} schema, err := graphql.NewSchema(schemaConfig) if err != nil { log.Fatalf("failed to create new schema, error: %v", err) } // Query query := ` { hello } ` params := graphql.Params{Schema: schema, RequestString: query} r := graphql.Do(params) if len(r.Errors) > 0 { log.Fatalf("failed to execute graphql operation, errors: %+v", r.Errors) } rJSON, _ := json.Marshal(r) fmt.Printf("%s \n", rJSON) // {"data":{"hello":"world"}} }
执行输出
{"data":{"hello":"world"}}
基于此项目的实践,参考