streamsets rest api 轉換 graphql

原理很簡單,就是使用swagger api 生成schema 而後代理請求處理api 調用node

參考項目 https://github.com/rongfengliang/streamsets-graphql-apigit

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-apigithub

相關文章
相關標籤/搜索