diff --git a/src/router.js b/src/router.js index 8c2780b..2a987ee 100644 --- a/src/router.js +++ b/src/router.js @@ -40,6 +40,14 @@ const Routers = function ({ history, app }) { cb(null, require('./routes/users/')) }, 'users') }, + }, { + path: 'request', + name: 'request', + getComponent (nextState, cb) { + require.ensure([], require => { + cb(null, require('./routes/request/')) + }, 'request') + }, }, { path: 'UIElement/iconfont', name: 'UIElement/iconfont', diff --git a/src/routes/request/index.js b/src/routes/request/index.js new file mode 100644 index 0000000..aa5aaad --- /dev/null +++ b/src/routes/request/index.js @@ -0,0 +1,113 @@ +import React from 'react' +import styles from './index.less' +import { request, config } from '../../utils' +import { + Row, + Col, + Card, + Select, + Input, + Button, +} from 'antd' + +const requestOptions = [ + { + url: `${location.origin}/api/users`, + desc: 'intercept request by mock.js', + }, + { + url: `${config.baseURL}/admin/order`, + desc: 'cross-domain request, but match config.baseURL(./src/utils/config.js)', + }, + { + url: 'http://www.zuimeitianqi.com/zuimei/queryWeather', + data: { + cityCode: '01010101', + }, + desc: 'cross-domain request by yahoo\'s yql', + }] + +export default class RequestPage extends React.Component { + constructor (props) { + super(props) + this.state = { + currntRequest: requestOptions[0], + method: 'get', + result: '', + } + } + componentDidMount () { + this.handleRequest() + } + + handleRequest = () => { + const { currntRequest } = this.state + const { desc, ...requestParams } = currntRequest + this.setState({ + ...this.state, + result:
+ 请求中
+ url:{currntRequest.url}
+ method:{currntRequest.method}
+ params:{currntRequest.data ? JSON.stringify(currntRequest.data) : 'null'}
+
, + }) + request({ ...requestParams }).then((data) => { + const state = this.state + state.result = [this.state.result,
请求完成
{JSON.stringify(data)}
] + this.setState(state) + }) + } + + handeleURLChange = (value) => { + const state = this.state + const currntItem = requestOptions.filter(item => value === item.url) + state.currntRequest = currntItem[0] + this.setState(state) + } + + render () { + const colProps = { + lg: 12, + md: 24, + } + const { result, currntRequest } = this.state + const { methoad = 'get' } = currntRequest + + return ( +
+ + + +
+ + + +
+
+
Params:
+ +
{currntRequest.desc}
+
+
+ {result} +
+
+ +
+
+ ) + } +} diff --git a/src/routes/request/index.less b/src/routes/request/index.less new file mode 100644 index 0000000..9b92e6f --- /dev/null +++ b/src/routes/request/index.less @@ -0,0 +1,29 @@ +.option { + display: flex; + justify-content: space-between; +} + +.result { + height: 600px; + width: 100%; + background: #f7f7f7; + border-color: #F1F1F1; + padding: 16px 8px; + margin-top: 16px; + word-break: break-word; + line-height: 24px; + overflow: scroll; +} + +.params { + display: flex; + justify-content: space-between; + margin-top: 16px; + line-height: 32px; + + .label { + width: 100px; + margin-right: 2px; + text-transform: uppercase; + } +} diff --git a/src/utils/menu.js b/src/utils/menu.js index 4382ae7..0b4e5eb 100644 --- a/src/utils/menu.js +++ b/src/utils/menu.js @@ -9,9 +9,14 @@ module.exports = [ name: '用户管理', icon: 'user', }, + { + key: 'request', + name: 'Request', + icon: 'api', + }, { key: 'UIElement', - name: 'UI组件', + name: 'UI Element', icon: 'camera-o', clickable: false, child: [ diff --git a/src/utils/request.js b/src/utils/request.js index d32f41b..026cd70 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -3,7 +3,11 @@ import qs from 'qs' import config from './config' const fetch = (options) => { - const { method = 'get', data, url } = options + const { + method = 'get', + data, + url, + } = options switch (method.toLowerCase()) { case 'get': return axios.get(url, { params: data }) @@ -33,5 +37,7 @@ export default function request (options) { return fetch(options).then((result) => { return result.data + }).catch((error) => { + console.log(error) }) }