問題
Express上のGraphQLサーバへと、curlでqueryを発行した。
$ curl -XPOST -H "Content-Type:application/graphql" \ 'http://localhost:5000/api/graphql' \ -d 'query Query { user(_id: 3) { name, mail } }'
すると、以下のようなレスポンスが。
{ "errors": [ { "message": "Must provide query string." } ] }
むむ。
対処法
その1
Expressの立ち上げスクリプトに追記する。
// ./server.js const express = require('express') const app = express() const bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: false })) // ↓この行を新規追加 app.use(bodyParser.text({ type: 'application/graphql' })) app.use(bodyParser.json())
POSTリクエストのbodyをテキストとして解析してくれる。
その2
リクエストの中身をjsonにする。キーをquery
(あるいはmutation
)として、値に発行したいクエリを設定する。
$ curl -XPOST -H "Content-Type:application/json" \ 'http://localhost:5000/api/graphql' \ -d ' { "query": "Query { user(_id: 3) { name, mail } } " } '