mirror of
https://github.com/YMFE/yapi.git
synced 2025-02-05 13:29:43 +08:00
feat: v1.3.0
This commit is contained in:
parent
0c54dea27e
commit
131d51054c
@ -16,6 +16,10 @@ const ContentTypeMap = {
|
||||
'application/html': 'html'
|
||||
}
|
||||
|
||||
// function isNode(){
|
||||
// return typeof module !== 'undefined' && module.exports
|
||||
// }
|
||||
|
||||
function handleContentType(headers) {
|
||||
if (!headers || typeof headers !== 'object') return ContentTypeMap.other;
|
||||
let contentTypeItem = 'other';
|
||||
@ -48,7 +52,31 @@ function handleCurrDomain(domains, case_env) {
|
||||
return currDomain;
|
||||
}
|
||||
|
||||
function crossRequest(options) {
|
||||
function evalScript(script){
|
||||
return eval(script);
|
||||
}
|
||||
|
||||
function HandlePreScript(options, script){
|
||||
let {pathname, query, body, header} = options; // eslint-disable-line
|
||||
evalScript(script)
|
||||
return options;
|
||||
}
|
||||
|
||||
// function HandleAfterScript(body, script){
|
||||
// return body;
|
||||
// }
|
||||
|
||||
function crossRequest(options, script) {
|
||||
if(script){
|
||||
let urlObj = URL.parse(options.url, true), query = {};
|
||||
query = Object.assign(query, urlObj.query);
|
||||
options = HandlePreScript({
|
||||
pathname: urlObj.pathname,
|
||||
query: query,
|
||||
body: options.data,
|
||||
header: options.headers || {}
|
||||
}, script);
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
options.error = options.success = function (res, header, data) {
|
||||
let message = '请求异常,请检查 chrome network 错误信息...';
|
||||
@ -95,7 +123,7 @@ function handleParams(interfaceData, handleValue, requestParams) {
|
||||
}
|
||||
|
||||
let { case_env, path, env } = interfaceData;
|
||||
let pathQuery = {}, currDomain, requestBody, requestOptions;
|
||||
let currDomain, requestBody, requestOptions = {};
|
||||
|
||||
interfaceData.req_params = interfaceData.req_params || [];
|
||||
interfaceData.req_params.forEach(item => {
|
||||
@ -109,22 +137,23 @@ function handleParams(interfaceData, handleValue, requestParams) {
|
||||
|
||||
|
||||
currDomain = handleCurrDomain(env, case_env);
|
||||
const urlObj = URL.parse(joinPath(currDomain.domain, path));
|
||||
urlObj.query && urlObj.query.split('&').forEach(item => {
|
||||
if (item) {
|
||||
item = item.split('=');
|
||||
pathQuery[item[0]] = item[1];
|
||||
}
|
||||
})
|
||||
const urlObj = URL.parse(joinPath(currDomain.domain, path), true);
|
||||
|
||||
const url = URL.format({
|
||||
protocol: urlObj.protocol || 'http',
|
||||
host: urlObj.host,
|
||||
pathname: urlObj.pathname,
|
||||
query: Object.assign(pathQuery, paramsToObjectWithEnable(interfaceData.req_query))
|
||||
query: Object.assign(urlObj.query, paramsToObjectWithEnable(interfaceData.req_query))
|
||||
|
||||
});
|
||||
|
||||
requestOptions = {
|
||||
url,
|
||||
method: interfaceData.method,
|
||||
headers: paramsToObjectUnWithEnable(interfaceData.req_headers),
|
||||
timeout: 82400000
|
||||
}
|
||||
|
||||
if (HTTP_METHOD[interfaceData.method].request_body) {
|
||||
if (interfaceData.req_body_type === 'form') {
|
||||
requestBody = paramsToObjectWithEnable(safeArray(interfaceData.req_body_form).filter(item => {
|
||||
@ -143,23 +172,16 @@ function handleParams(interfaceData, handleValue, requestParams) {
|
||||
}else{
|
||||
requestBody = interfaceData.req_body_other;
|
||||
}
|
||||
requestOptions.data = requestBody;
|
||||
if (interfaceData.req_body_type === 'form') {
|
||||
requestOptions.files = paramsToObjectWithEnable(safeArray(interfaceData.req_body_form).filter(item => {
|
||||
return item.type == 'file'
|
||||
}))
|
||||
} else if (interfaceData.req_body_type === 'file') {
|
||||
requestOptions.file = 'single-file'
|
||||
}
|
||||
}
|
||||
|
||||
requestOptions = {
|
||||
url,
|
||||
method: interfaceData.method,
|
||||
headers: paramsToObjectUnWithEnable(interfaceData.req_headers),
|
||||
data: requestBody,
|
||||
timeout: 82400000
|
||||
}
|
||||
|
||||
if (interfaceData.req_body_type === 'form') {
|
||||
requestOptions.files = paramsToObjectWithEnable(safeArray(interfaceData.req_body_form).filter(item => {
|
||||
return item.type == 'file'
|
||||
}))
|
||||
} else if (interfaceData.req_body_type === 'file') {
|
||||
requestOptions.file = 'single-file'
|
||||
}
|
||||
return requestOptions;
|
||||
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
import React, { PureComponent as Component } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import '../Setting.scss';
|
||||
|
||||
|
||||
@connect(
|
||||
state => {
|
||||
return {
|
||||
projectMsg: state.project.projectMsg
|
||||
}
|
||||
}
|
||||
)
|
||||
export default class ProjectRequest extends Component{
|
||||
static propTypes = {
|
||||
projectMsg: PropTypes.object
|
||||
}
|
||||
|
||||
render(){
|
||||
return <div>Hi</div>
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ import { Tabs } from 'antd';
|
||||
import PropTypes from 'prop-types';
|
||||
import ProjectMessage from './ProjectMessage/ProjectMessage.js';
|
||||
import ProjectEnv from './ProjectEnv/ProjectEnv.js';
|
||||
import ProjectRequest from './ProjectRequest/ProjectRequest';
|
||||
const TabPane = Tabs.TabPane;
|
||||
|
||||
import './Setting.scss';
|
||||
@ -22,6 +23,9 @@ class Setting extends Component {
|
||||
<TabPane tab="环境配置" key="2">
|
||||
<ProjectEnv projectId={+id} />
|
||||
</TabPane>
|
||||
<TabPane tab="请求配置" key="3">
|
||||
<ProjectRequest projectId={+id} />
|
||||
</TabPane>
|
||||
</Tabs>
|
||||
</div>
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user