swagger api 转graphql npm 包试用

Posted rongfengliang-荣锋亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swagger api 转graphql npm 包试用相关的知识,希望对你有一定的参考价值。

graphql 比较方便的进行api 的查询,操作,swagger 是一个方便的open api 描述标准,当前我们有比较多的
restapi 但是转换为graphql 是有成本的,还好swagger-to-graphql 这个npm 包帮助我们简化了操作

基本项目

具体项目参考 https://github.com/rongfengliang/swagger-to-graphql-docker

  • 项目结构
├── Dockerfile
├── README.md
├── api
│ └── s.json
├── app.js
├── docker-compose.yaml
├── lib
│ ├── index.js
│ ├── swagger.js
│ ├── typeMap.js
│ └── types.js
├── package.json
└── yarn.lock
  • 代码说明
package.json  依赖添加
{
  "name": "swagger-graphql",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "babel-polyfill": "^6.26.0",
    "express": "^4.16.3",
    "express-graphql": "^0.6.12",
    "graphql": "^0.13.2",
    "swagger-to-graphql": "^1.4.0"
  },
  "scripts": {
    "start": "node app"
  }
}
app.js restapi 转 graphql 
require(\'babel-polyfill\');
const express = require(\'express\');
const app = express();
const graphqlHTTP = require(\'express-graphql\');
const graphQLSchema = require(\'./lib\'); // 类型映射

const proxyUrl = \'https://petstore.swagger.io/v2\';
const pathToSwaggerSchema = `${__dirname}/api/s.json`; // swagger api 描述
const customHeaders = {
  Authorization: \'Basic YWRkOmJhc2ljQXV0aA==\'
};

graphQLSchema(pathToSwaggerSchema, proxyUrl, customHeaders).then(schema => {
  app.use(\'/graphql\', graphqlHTTP(() => {
    return {
      schema,
      graphiql: true
    };
  }));

  app.listen(3009, \'0.0.0.0\', () => {
    console.info(\'http://localhost:3009/graphql\');
  });
}).catch(e => {
  console.log(e);
});

Dockerfile  docker 镜像构建

FROM dalongrong/node-yarn
WORKDIR /app
COPY . /app
RUN yarn install
EXPOSE 3009
ENTRYPOINT [ "yarn","start" ]

docker-compose.yaml  docker-compose 运行文件
version: "3"
services:
   g:
    build: ./
    image: dalongrong/swagger-graphql
    ports:
    - "3009:3009"

运行

  • docker 镜像构建
docker-compose build
  • docker-compose run
docker-compose up -d
  • 访问
    请求测试

    接口文档

说明

类似的解决方案有 schema stitch graphql-binding

参考资料

https://github.com/yarax/swagger-to-graphql
https://github.com/graphql-binding/graphql-binding
https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/
https://github.com/rongfengliang/swagger-to-graphql-docker

以上是关于swagger api 转graphql npm 包试用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swagger\OpenAPI 记录 GraphQL?

openapi转ts

swagger 服务搭建

Spring Boot中使用Swagger2生成RESTful API文档(转)

Swagger入门教程(转)

GraphQL怎么生成API DOC