fix: 更换node 端请求 swagger url 的方式

This commit is contained in:
gaoxiaolin.gao 2018-09-19 14:20:16 +08:00
parent 109c865820
commit 05d2bb3ad7
3 changed files with 44 additions and 9 deletions

View File

@ -31,7 +31,7 @@ const RadioGroup = Radio.Group;
const importDataModule = {};
const exportDataModule = {};
const HandleImportData = require('common/HandleImportData');
import {json5_parse} from '../../../../common.js'
function handleExportRouteParams(url, status, isWiki) {
if (!url) {
return;
@ -89,7 +89,7 @@ class ProjectData extends Component {
fetchUpdateLogData: PropTypes.func,
updateLogList: PropTypes.array,
handleSwaggerUrlData: PropTypes.func,
swaggerUrlData: PropTypes.object
swaggerUrlData: PropTypes.string
};
componentWillMount() {
@ -258,8 +258,8 @@ class ProjectData extends Component {
try {
// 处理swagger url 导入
await this.props.handleSwaggerUrlData(this.state.swaggerUrl);
let res = await importDataModule[this.state.curImportType].run(this.props.swaggerUrlData);
let result = json5_parse(this.props.swaggerUrlData)
let res = await importDataModule[this.state.curImportType].run(result);
if (this.state.dataSync === 'merge') {
// merge
this.showConfirm(res);

View File

@ -12,7 +12,7 @@ const userModel = require('../models/user.js');
const logModel = require('../models/log.js');
const followModel = require('../models/follow.js');
const tokenModel = require('../models/token.js');
const axios = require('axios');
const url = require('url');
const sha = require('sha.js');
@ -1116,10 +1116,10 @@ class projectController extends baseController {
// 输入 swagger url 的时候node端请求数据
async swaggerUrl(ctx) {
try {
let url = ctx.request.query.url;
let result = await axios.get(url);
ctx.body = yapi.commons.resReturn(result.data);
let ops = url.parse(ctx.request.query.url);
let result = await yapi.commons.createWebAPIRequest(ops);
ctx.body = yapi.commons.resReturn(result);
} catch (err) {
ctx.body = yapi.commons.resReturn(null, 402, err.message);
}

View File

@ -18,6 +18,7 @@ const ejs = require('easy-json-schema');
const jsf = require('json-schema-faker');
const formats = require('../../common/formats');
const http = require('http');
jsf.extend ('mock', function () {
return {
@ -626,3 +627,37 @@ exports.handleMockScript = function(script, context) {
context.delay = sandbox.delay;
};
exports.createWebAPIRequest = function(ops) {
return new Promise(function(resolve, reject) {
let req = '';
let http_client = http.request(
{
host: ops.hostname,
method: 'GET',
port: ops.port,
path: ops.path
},
function(res) {
res.on('error', function(err) {
reject(err);
});
res.setEncoding('utf8');
if (res.statusCode != 200) {
reject({message: 'statusCode != 200'});
} else {
res.on('data', function(chunk) {
req += chunk;
});
res.on('end', function() {
resolve(req);
});
}
}
);
http_client.end();
});
}