-
Notifications
You must be signed in to change notification settings - Fork 3
/
test.js
52 lines (43 loc) · 1.62 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const requestUrlExtractor = (request) => {
// 1. Разбиване на URL адреса по символа /
const requestUrlCollection = request.url.split('/');
// /products -> 2
const requestUrlSegmentCount = requestUrlCollection.length; // 2 // 3
const lastSegmentIndex = requestUrlSegmentCount - 1;
// Разбиване на заявка по символа ?
// /products?limit=10
const requestUrlCollectionQuery = requestUrlCollection[lastSegmentIndex].split('?');
const queryParameterSegment = requestUrlCollectionQuery[1];
// Кога може да имам requestAction
// /products?limit=10
// /products/10?limit=10
// const requestAction = requestUrlCollection[1];
const requestAction = (requestUrlSegmentCount == 2)
? requestUrlCollectionQuery[0]
: requestUrlCollection[1];
// const requestFilter = requestUrlCollection[2];
const requestFilter = (requestUrlSegmentCount == 3)
? requestUrlCollectionQuery[0]
: undefined;
return {
action : requestAction,
filter : requestFilter,
query : queryParameterSegment,
method : request.method
};
}
console.log(requestUrlExtractor({
url: '/products'
}));
console.log('***')
console.log(requestUrlExtractor({
url: '/products/10'
}));
console.log('***')
console.log(requestUrlExtractor({
url: '/products?limit=10&size=10'
}));
console.log('***')
console.log(requestUrlExtractor({
url: '/products/10?limit=10'
}));