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?