gpt4 book ai didi

schema - 从 json api 响应生成 Graphql 模式

转载 作者:行者123 更新时间:2023-12-02 04:50:01 28 4
gpt4 key购买 nike

我使用 Apollo server 2.0 作为我的其余 API(不同的微服务)上的 graphql 聚合层。

我想直接从微服务的 api 响应生成 graphql 架构,而不是手动编写它们,这可能容易出错。

例如,如果我的 api 响应是

const restApiResponse = {
"id": 512,
"personName": "Caribbean T20 2016",
"personShortName": "caribbean-t20 2016",
"startDate": "2016-06-29T19:30:00.000Z",
"endDate": "2016-08-08T18:29:59.000Z",
"status": 0,
};

然后我想根据提供的 typeName 生成以下架构,例如 Person -

type Person {
id: Float
personName: String
personShortName: String
startDate: String
endDate: String
status: Float
}

最佳答案

最后,经过大量搜索和查找,我编写了一个脚本来为我做到这一点 -

这有一些小问题,例如整数被解析为 float ,但这很好,因为如果需要,我可以用 int 替换它们。

const { composeWithJson } = require('graphql-compose-json');
const { GQC } = require('graphql-compose');
const { printSchema } = require('graphql'); // CommonJS


const restApiResponse = {
"id": 399,
"templateId": 115,
"amount": 100000,
"amountINR": 100000,
"amountUSD": 0,
"currencyCode": "INR",
"createdAt": "2018-06-07T00:08:28.000Z",
"createdBy": 36,
};

const GqlType = composeWithJson('Template', restApiResponse);
const PersonGraphQLType = GqlType.getType();

GqlType.addResolver({
name: 'findById',
type: GqlType,
args: {
id: 'Int!',
},
resolve: rp => {
},
});

GQC.rootQuery().addFields({
person: GqlType.getResolver('findById'),
});

const schema = GQC.buildSchema();

console.log(printSchema(schema));

它生成这样的输出 -

type Template {
id: Float
templateId: Float
amount: Float
amountINR: Float
amountUSD: Float
currencyCode: String
createdAt: String
createdBy: Float
}

关于schema - 从 json api 响应生成 Graphql 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53352739/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com