fix: query path encode query bug

This commit is contained in:
suxiaoxin 2017-11-10 18:07:13 +08:00
parent 02191051f8
commit 2f8087f139
2 changed files with 34 additions and 16 deletions

View File

@ -197,23 +197,27 @@ export default class Run extends Component {
return; return;
} }
const { headers, bodyForm, pathParam, bodyOther, caseEnv, domains, method, pathname, query, bodyType } = this.state; const { headers, bodyForm, pathParam, bodyOther, caseEnv, domains, method, pathname, query, bodyType } = this.state;
const urlObj = URL.parse(_.find(domains, item => item.name === caseEnv).domain);
let path = pathname; let path = pathname;
pathParam.forEach(item => { pathParam.forEach(item => {
path = path.replace(`:${item.name}`, handleMockWord(item.value) || `:${item.name}`); path = path.replace(`:${item.name}`, handleMockWord(item.value) || `:${item.name}`);
}); });
if (urlObj.pathname) { const urlObj = URL.parse(URL.resolve(_.find(domains, item => item.name === caseEnv).domain, '.' + path));
if (urlObj.pathname[urlObj.pathname.length - 1] !== '/') {
urlObj.pathname += '/' let pathQuery = {};
urlObj.query && urlObj.query.split('&').forEach(item=>{
if(item){
item = item.split('=');
pathQuery[item[0]] = item[1];
} }
} })
const href = URL.format({ const href = URL.format({
protocol: urlObj.protocol || 'http', protocol: urlObj.protocol || 'http',
host: urlObj.host, host: urlObj.host,
pathname: urlObj.pathname ? URL.resolve(urlObj.pathname, '.' + path) : path, pathname: urlObj.pathname,
query: this.getQueryObj(query) query: Object.assign(pathQuery, this.getQueryObj(query))
}); });
let reqBody; let reqBody;
if(bodyType === 'form'){ if(bodyType === 'form'){
@ -575,7 +579,16 @@ export default class Run extends Component {
let val = handleMockWord(item.value); let val = handleMockWord(item.value);
path = path.replace(`:${item.name}`, val || `:${item.name}`); path = path.replace(`:${item.name}`, val || `:${item.name}`);
}); });
const search = decodeURIComponent(URL.format({ query: this.getQueryObj(query) })); const pathObj = URL.parse(path);
path = pathObj.pathname;
let pathQuery = {};
pathObj.query && pathObj.query.split('&').forEach(item=>{
if(item){
item = item.split('=');
pathQuery[item[0]] = item[1];
}
})
const search = decodeURIComponent(URL.format({ query: Object.assign(pathQuery, this.getQueryObj(query)) }));
let validResView; let validResView;
validResView = validRes.map((item, index) => { validResView = validRes.map((item, index) => {

View File

@ -193,6 +193,7 @@ class InterfaceColContent extends Component {
} }
handleTest = async (interfaceData) => { handleTest = async (interfaceData) => {
console.log(1)
const { currProject } = this.props; const { currProject } = this.props;
let requestParams = {}; let requestParams = {};
let { case_env } = interfaceData; let { case_env } = interfaceData;
@ -207,22 +208,26 @@ class InterfaceColContent extends Component {
case_env = this.state.currColEnv ? this.state.currColEnv : case_env; case_env = this.state.currColEnv ? this.state.currColEnv : case_env;
let pathQuery = {};
let currDomain = _.find(domains, item => item.name === case_env); let currDomain = _.find(domains, item => item.name === case_env);
if (!currDomain) { if (!currDomain) {
currDomain = domains[0]; currDomain = domains[0];
} }
const urlObj = URL.parse(currDomain.domain);
if (urlObj.pathname) { const urlObj = URL.parse(URL.resolve(currDomain.domain, '.' + path));
if (urlObj.pathname[urlObj.pathname.length - 1] !== '/') { urlObj.query && urlObj.query.split('&').forEach(item=>{
urlObj.pathname += '/' if(item){
item = item.split('=');
pathQuery[item[0]] = item[1];
} }
} })
const href = URL.format({ const href = URL.format({
protocol: urlObj.protocol || 'http', protocol: urlObj.protocol || 'http',
host: urlObj.host, host: urlObj.host,
pathname: urlObj.pathname ? URL.resolve(urlObj.pathname, '.' + path) : path, pathname: urlObj.pathname,
query: this.getQueryObj(interfaceData.req_query, requestParams) query: Object.assign(pathQuery, this.getQueryObj(interfaceData.req_query, requestParams))
}); });
let result = { code: 400, msg: '数据异常', validRes: [] }; let result = { code: 400, msg: '数据异常', validRes: [] };