3

エンドポイントに接続GraphQLしていRESTます。呼び出すたびにエンドポイントに到達し、サーバーに応答が返されることを確認しhttp://localhost:3001/graphqlましたRESTが、サーバーから次のように空の応答が返されます。JSONGraphQLGraphQLGUI

{
  "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 オブジェクトに問題がある可能性があります。

4

2 に答える 2