diff --git a/client/common.js b/client/common.js index 425df6fc..1b1dde1b 100755 --- a/client/common.js +++ b/client/common.js @@ -287,4 +287,15 @@ exports.safeAssign = (Obj, nextObj) => { }; exports.simpleJsonPathParse = simpleJsonPathParse; -exports.handleMockWord = handleMockWord; \ No newline at end of file +exports.handleMockWord = handleMockWord; + +exports.joinPath = (domain, joinPath) =>{ + let l = domain.length; + if(domain[l - 1] === '/'){ + domain = domain.substr(0, l - 1) + } + if(joinPath[0] !== '/'){ + joinPath = joinPath.substr(1); + } + return domain + joinPath; +} \ No newline at end of file diff --git a/client/components/Postman/Postman.js b/client/components/Postman/Postman.js index a75f35d0..bb550b74 100755 --- a/client/components/Postman/Postman.js +++ b/client/components/Postman/Postman.js @@ -9,7 +9,7 @@ import URL from 'url'; const MockExtra = require('common/mock-extra.js') import './Postman.scss'; import json5 from 'json5' -import { isJson, handleJson, handleParamsValue } from '../../common.js' +import { isJson, handleJson, handleParamsValue,joinPath } from '../../common.js' import _ from "underscore" import ModalPostman from '../ModalPostman/index.js' @@ -260,7 +260,8 @@ export default class Run extends Component { path = path.replace(`:${item.name}`, this.handleValue(item.value) || `:${item.name}`); }); - const urlObj = URL.parse(URL.resolve(_.find(domains, item => item.name === caseEnv).domain, '.' + path)); + let curdomain = _.find(domains, item => item.name === caseEnv).domain; + const urlObj = URL.parse(joinPath(curdomain, path)); let pathQuery = {}; urlObj.query && urlObj.query.split('&').forEach(item => { diff --git a/client/containers/Project/Interface/InterfaceCol/InterfaceColContent.js b/client/containers/Project/Interface/InterfaceCol/InterfaceColContent.js index a7290ef3..e27bd63d 100755 --- a/client/containers/Project/Interface/InterfaceCol/InterfaceColContent.js +++ b/client/containers/Project/Interface/InterfaceCol/InterfaceColContent.js @@ -8,7 +8,7 @@ import { Tooltip, Icon, Button, Spin, Modal, message, Select, Switch } from 'ant import { fetchInterfaceColList, fetchCaseList, setColData } from '../../../../reducer/modules/interfaceCol' import HTML5Backend from 'react-dnd-html5-backend'; import { DragDropContext } from 'react-dnd'; -import { isJson, handleJson, handleParamsValue } from '../../../../common.js' +import { isJson, handleJson, handleParamsValue, joinPath } from '../../../../common.js' import mockEditor from '../InterfaceList/mockEditor'; import * as Table from 'reactabular-table'; import * as dnd from 'reactabular-dnd'; @@ -196,7 +196,7 @@ class InterfaceColContent extends Component { const { currProject } = this.props; let requestParams = {}; let { case_env } = interfaceData; - let path = URL.resolve(currProject.basepath, interfaceData.path); + let path = joinPath(currProject.basepath, interfaceData.path); interfaceData.req_params = interfaceData.req_params || []; interfaceData.req_params.forEach(item => { let val = this.handleValue(item.value); @@ -214,7 +214,7 @@ class InterfaceColContent extends Component { currDomain = domains[0]; } - const urlObj = URL.parse(URL.resolve(currDomain.domain, '.' + path)); + const urlObj = URL.parse(joinPath(currDomain.domain, path)); urlObj.query && urlObj.query.split('&').forEach(item => { if (item) { item = item.split('=');