2017-01-20 2 views
0

ブログの投稿http://graphql.org/blog/rest-api-graphql-wrapper/ に記載されている手順に従ってこのブログを終了しました。独自のREST APIでgraphQLエンドポイントを作成しました。コンソールにコールを記録すると、正しい応答が生成されているのがわかりますが、GraphiQL IDEではデータは常にNULLです。理由は何でしょうか?ここでGraphQL over REST APIを実行するとnullデータが返される

私のコードです:

import { 
 
\t GraphQLSchema, 
 
\t GraphQLObjectType, 
 
\t GraphQLString, 
 
} from 'graphql' 
 

 
import fetch from 'node-fetch' 
 

 
const BASE_URL = 'http://localhost/my.test.web/api/v1/customer/91/reservation' 
 

 
const ReservationType = new GraphQLObjectType({ 
 
\t name: 'Reservation', 
 
\t description: 'This is reservation details', 
 
\t 
 
\t 
 
\t fields:() => ({ 
 
\t \t id: {type: GraphQLString}, 
 
\t \t confirmationNumber: { 
 
\t \t \t type: GraphQLString, 
 
\t \t \t resolve: (reservation) => reservation.confirmationNumber 
 
\t \t }, 
 
\t \t status: { 
 
\t \t \t type: GraphQLString, 
 
\t \t \t resolve: (reservation) => reservation.status 
 
\t \t } 
 
\t \t 
 
\t }) 
 
}); 
 

 

 
const QueryType = new GraphQLObjectType(
 
{ 
 
\t name: "query", 
 
\t description: "This is query by Id", 
 
\t 
 
\t fields:() => ({ 
 
\t \t \t reservation: { 
 
\t \t \t \t type: ReservationType, 
 
\t \t \t \t args: { 
 
\t \t \t \t \t id: {type: GraphQLString} 
 
\t \t \t \t }, 
 
\t \t \t \t resolve: (root, args) => { 
 
\t \t \t \t \t var url = BASE_URL+ '/' + args.id; 
 
\t \t \t \t \t console.log(url); 
 
\t \t \t \t \t var options = { 
 
\t \t \t \t \t \t headers: { 
 
\t \t \t \t \t \t 'Accept': 'application/json', 
 
\t \t \t \t \t \t 'Accept-Language':'en-US' 
 
\t \t \t \t \t \t } 
 
\t \t \t \t \t }; \t \t \t \t \t 
 
\t \t \t \t \t fetch(url,options) 
 
\t \t \t \t \t .then(function(res) { 
 
\t \t \t \t \t \t return res.json(); 
 
\t \t \t \t \t }).then(function(json) { 
 
\t \t \t \t \t \t console.log(json); 
 
\t \t \t \t \t \t return json; 
 
\t \t \t \t \t }); 
 
\t \t \t \t \t } 
 
\t \t \t } 
 
\t \t } 
 
\t) 
 
}); 
 

 
export default new GraphQLSchema(
 
\t \t { 
 
\t \t \t query: QueryType, 
 
\t \t } 
 
\t)

私はgraphiQLを使用して、これを実行すると表現したとき、私はログが正しく、コードのこの部分によって生成されていることがわかります -

.then(function(json) { 
          console.log(json); 
          return json; 
         } 

GraphiQL UIでは、データはnullです。 GraphiQL IDE query screenshot

+0

魔法のように動作します:「」各ブロックの終わりとも決意の周りにラッパーを削除注意してくださいlogステートメントAPIから返された正しいJSONを確認できましたが、GraphiQL UIではnullです – Kiran

答えて

0

最後に私は原因を見つけることができました。これは構文であり、JSONは返されません。次のように

のquerytypeが定義されている必要があり、それがで

const QueryType = new GraphQLObjectType({ 
 
    name: "query", 
 
    description: "This is person query by Id", 
 
    fields:() => ({ 
 
    person: { 
 
     type: PersonType, 
 
     args: { 
 
     id: { type: GraphQLString }, 
 
     }, 
 
     resolve: (root, args) => \t \t \t \t 
 
\t \t \t \t \t fetch(BASE_URL +'/people/' +args.id) 
 
\t \t \t \t \t \t .then(function(res) { 
 
\t \t \t \t \t \t return res.json() 
 
\t \t \t \t \t \t }) 
 
\t \t \t \t \t \t \t .then(function(json) { 
 
\t \t \t \t \t \t \t console.log(json) 
 
\t \t \t \t \t \t \t return json 
 
\t \t \t \t \t \t \t }), \t \t \t \t 
 
    }, 
 
    }), 
 
});

関連する問題