import React from 'react' import { request } from 'utils' import { apiPrefix } from 'utils/config' import { Row, Col, Select, Form, Input, Button, List, Tag, Checkbox } from 'antd' import classnames from 'classnames' import { CloseOutlined } from '@ant-design/icons' import { Trans } from "@lingui/macro" import api from '@/services/api' import { Page } from 'components' import styles from './index.less' const { Option } = Select const InputGroup = Input.Group const methods = ['POST', 'GET', 'PUT', 'PATCH', 'DELETE'] const methodTagColor = { GET: 'green', POST: 'orange', DELETE: 'red', PUT: 'geekblue', } const requests = Object.values(api).map(item => { let url = apiPrefix + item let method = 'GET' const paramsArray = item.split(' ') if (paramsArray.length === 2) { method = paramsArray[0] url = apiPrefix + paramsArray[1] } return { method, url, } }) let uuid = 2 class RequestPage extends React.Component { formRef = React.createRef() constructor(props) { super(props) this.state = { method: 'GET', url: '/api/v1/routes', keys: [1], result: null, visible: true, } } handleRequest = () => { const { method, url } = this.state this.formRef.current.validateFields() .then(values => { // values: { check[1]: true, key[1]: 'username', value[1]: 'admin' } const params = {} for (let i in values) { if (i.startsWith('check')) { const index = i.match(/check\[(\d+)\]/)[1] const key = values[`key[${index}]`] params[key] = values[`value[${index}]`] } } request({ method, url, data: params }).then(data => { this.setState({ result: JSON.stringify(data), }) }) }) .catch(errorInfo => { console.log(errorInfo) /* errorInfo: { values: { username: 'username', password: 'password', }, errorFields: [ { password: ['username'], errors: ['Please input your Password!'] }, ], outOfDate: false, } */ }) } handleClickListItem = ({ method, url }) => { this.setState({ method, url, keys: [uuid++], result: null, }) } handleInputChange = e => { this.setState({ url: e.target.value, }) } handleSelectChange = method => { this.setState({ method, }) } handleAddField = () => { const { keys } = this.state const nextKeys = keys.concat(uuid) uuid++ this.setState({ keys: nextKeys, }) } handleRemoveField = key => { const { keys } = this.state this.setState({ keys: keys.filter(item => item !== key), }) } handleVisible = () => { this.setState({ visible: !this.state.visible, }) } render() { const { result, url, method, keys, visible } = this.state return ( ( {item.method} {item.url} )} />
{keys.map((key, index) => ( ))}
{result}
) } } export default RequestPage