エンドポイントに接続GraphQL
していREST
ます。呼び出すたびにエンドポイントに到達し、サーバーに応答が返されることを確認しhttp://localhost:3001/graphql
ましたREST
が、サーバーから次のように空の応答が返されます。JSON
GraphQL
GraphQL
GUI
{
"data": {
"merchant": {
"id": null
}
}
}
クエリ (手動でデコード):
http://localhost:3001/graphql?query={
merchant(id: 1) {
id
}
}
以下は私の様子GraphQLObjectType
です:
const MerchantType = new GraphQLObjectType({
name: 'Merchant',
description: 'Merchant details',
fields : () => ({
id : {
type: GraphQLString // ,
// resolve: merchant => merchant.id
},
email: {type: GraphQLString}, // same name as field in REST response, so resolver is not requested
mobile: {type: GraphQLString}
})
});
const QueryType = new GraphQLObjectType({
name: 'Query',
description: 'The root of all... queries',
fields: () => ({
merchant: {
type: merchant.MerchantType,
args: {
id: {type: new GraphQLNonNull(GraphQLID)},
},
resolve: (root, args) => rest.fetchResponseByURL(`merchant/${args.id}/`)
},
}),
});
エンドポイントからの応答REST
(JSON 配列の代わりに JSON の単一オブジェクトでも試しました):
[
{
"merchant": {
"id": "1",
"email": "a@b.com",
"mobile": "1234567890"
}
}
]
を使用した REST 呼び出しnode-fetch
function fetchResponseByURL(relativeURL) {
return fetch(`${config.BASE_URL}${relativeURL}`, {
method: 'GET',
headers: {
Accept: 'application/json',
}
})
.then(response => {
if (response.ok) {
return response.json();
}
})
.catch(error => { console.log('request failed', error); });
}
const rest = {
fetchResponseByURL
}
export default rest
GitHub: https://github.com/vishrantgupta/graphql
JSON エンドポイント (ダミー): https://api.myjson.com/bins/8lwqk
編集:node.js
タグを追加すると、promise オブジェクトに問題がある可能性があります。