UNPKG

994 BPlain TextView Raw
1import {
2 ABSOLUTE_PATH, AND_MARK, EMPTY, END_SLASH, EQUAL_MARK, HEAD_SLASH, QUESTION_MARK, SINGE_SLASH
3} from "../config/regexp";
4
5const 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
19const 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
35const isAbsolute = (url) => {
36 return ABSOLUTE_PATH.test(url)
37}
38
39export default urlFormat
\No newline at end of file