| import omit from 'lodash/omit'; | |
| import { RequestMethod } from 'umi-request'; | |
| type Service<T extends string> = Record< | |
| T, | |
| (params?: any, urlAppendix?: string) => any | |
| >; | |
| const Methods = ['post', 'delete', 'put']; | |
| const registerServer = <T extends string>( | |
| opt: Record<T, { url: string; method: string }>, | |
| request: RequestMethod, | |
| ) => { | |
| const server: Service<T> = {} as Service<T>; | |
| for (let key in opt) { | |
| server[key] = (params?: any, urlAppendix?: string) => { | |
| let url = opt[key].url; | |
| const requestOptions = opt[key]; | |
| if (urlAppendix) { | |
| url = url + '/' + urlAppendix; | |
| } | |
| if (Methods.some((x) => x === opt[key].method.toLowerCase())) { | |
| return request(url, { | |
| method: opt[key].method, | |
| data: params, | |
| }); | |
| } | |
| if (opt[key].method === 'get' || opt[key].method === 'GET') { | |
| return request.get(url, { | |
| ...omit(requestOptions, ['method', 'url']), | |
| params, | |
| }); | |
| } | |
| }; | |
| } | |
| return server; | |
| }; | |
| export default registerServer; | |