如何将 GraphQL 文件转换为 Postman 集合?

How to convert a GraphQL file to a Postman Collection?

我想将 GraphQL 文件转换为 Postman 集合。我尝试使用 JavaScript 库来做到这一点 (https://www.npmjs.com/package/graphql-to-postman)。

但我收到以下错误:

Unhandled Rejection (TypeError): Cannot set property 'includeDeprecatedFields' of undefined

function convert() {
    var postmanJson = fileReader.result,
    fileDownload = require('js-file-download');
    const graphQlToPostman = require('graphql-to-postman');

    const collection = graphQlToPostman.convert(postmanJson);

    fileDownload(
        JSON.stringify(collection),
        'postman collection',
    );
}

这是我使用库的函数。

要将 graphql 转换为 postman 集合,首先需要 graphql 架构。可以通过 运行 对 graphql 服务器端点的自省查询来下载 Graphql 模式。以下是操作方法。

  1. 安装graphql-cli

    npm i -g apollo
    
  2. 从 graphql 服务器下载架构

    apollo schema:download --endpoint=http://localhost:4000/graphql schema.json
    

将模式转换为 graphql 集合

const fs = require('fs')
const converter = require('graphql-to-postman')

const schema = fs.readFileSync('./schema.json')
converter.convert({
    type: 'string',
    data: schema.toString(),
}, {}, async function (error, result) {
    if (error) {
        log.error('Conversion failed')
    } else {
        const outputData = result.output[0].data
        fs.writeFileSync('output-collection.json', JSON.stringify(outputData))
        console.log('Conversion success');
    }
})

我构建了一个 easy-to-use command-line 工具,允许您从 GraphQL 端点自动生成 Postman collection。 (https://www.npmjs.com/package/graphql-testkit)

它还附带 out-of-the-box 支持以控制最大深度并向 collection 中的所有请求添加 headers。

只需执行此操作,在替换端点并根据您的要求添加或删除 headers 后,将 auto-generate 邮递员 Collection 支持变量。

graphql-testkit \ 
--endpoint=https://api/spacex.land/graphql\ 
--header="Authorization:123,x-ws-system-id=10" \
--maxDepth=4