streamsets rest api 转换 graphql
原理很简单,就是使用swagger api 生成schema 然后代理请求处理api 调用
参考项目 https://github.com/rongfengliang/streamsets-graphql-api
streamsets restapi
使用的npm 包
package.json: { "name": "restapi", "version": "1.0.0", "main": "index.js", "license": "MIT", "dependencies": { "babel-polyfill": "^6.26.0", "compression": "^1.7.3", "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 require('babel-polyfill'); const express = require('express'); const app = express(); const graphqlHTTP = require('express-graphql'); const graphQLSchema = require('./lib'); const compression = require('compression'); app.use(compression()); // 修改为对应的server 用户以及地址 const proxyUrl = 'http://admin:admin@localhost:18630/rest'; const pathToSwaggerSchema = `${__dirname}/api/swagger.json`; // 此处比较重要因为接口是gzip 可以进行内容协商,不使用gzip const customHeaders = { "accept-encoding": "identity" }; 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); });
效果
参考资料
https://github.com/rongfengliang/streamsets-graphql-api