1 | import {
|
2 | ABSOLUTE_PATH, AND_MARK, EMPTY, END_SLASH, EQUAL_MARK, HEAD_SLASH, QUESTION_MARK, SINGE_SLASH
|
3 | } from "../config/regexp";
|
4 |
|
5 | const urlFormat = (baseURL: string = SINGE_SLASH, relativeUrl: string, params?: object): string => {
|
6 | let url
|
7 |
|
8 | if (isAbsolute(relativeUrl)) {
|
9 | url = relativeUrl
|
10 | } else {
|
11 | url = relativeUrl
|
12 | ? baseURL.replace(END_SLASH, EMPTY) + SINGE_SLASH + relativeUrl.replace(HEAD_SLASH, EMPTY)
|
13 | : baseURL.replace(END_SLASH, SINGE_SLASH);
|
14 | }
|
15 |
|
16 | return buildUrl(url, params)
|
17 | }
|
18 |
|
19 | const buildUrl = (url, params) => {
|
20 | if (params) {
|
21 | url.replace(END_SLASH, EMPTY)
|
22 | url += QUESTION_MARK
|
23 |
|
24 | let paramsTarget = []
|
25 | for (let k in params) {
|
26 | paramsTarget.push(`${k}${EQUAL_MARK}${params[k]}`)
|
27 | }
|
28 |
|
29 | url += paramsTarget.join(AND_MARK)
|
30 | }
|
31 |
|
32 | return url.replace(END_SLASH, EMPTY)
|
33 | }
|
34 |
|
35 | const isAbsolute = (url) => {
|
36 | return ABSOLUTE_PATH.test(url)
|
37 | }
|
38 |
|
39 | export default urlFormat |
\ | No newline at end of file |