Skip to content

Commit 4055238

Browse files
authored
Merge pull request #24 from vikadata/fix-uri-variables
Fix uri variables
2 parents 4b80003 + 1d9cf7b commit 4055238

File tree

4 files changed

+13
-13
lines changed

4 files changed

+13
-13
lines changed

client/src/main/java/cn/vika/client/api/model/ApiQueryParam.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import java.util.List;
2828
import java.util.Map;
2929

30-
import cn.vika.client.api.util.UrlEncoder;
30+
import cn.vika.core.utils.UrlEncoder;
3131
import com.fasterxml.jackson.core.JsonProcessingException;
3232
import com.fasterxml.jackson.databind.ObjectMapper;
3333

@@ -66,7 +66,7 @@ public ApiQueryParam(int page, int pageSize) {
6666
}
6767

6868
public ApiQueryParam withSort(String fieldName, Order order) {
69-
List<String> values = computeIfAbsent(SORT, k -> new ArrayList<>(1));
69+
List<String> values = computeIfAbsent(UrlEncoder.encodeURIComponent(SORT), k -> new ArrayList<>(1));
7070
values.add(formatSort(fieldName, order));
7171
return this;
7272
}
@@ -128,7 +128,7 @@ private String formatSort(String fieldName, Order order) {
128128
sortMap.put("field", fieldName);
129129
sortMap.put("order", order.name().toLowerCase());
130130
try {
131-
return new ObjectMapper().writeValueAsString(sortMap);
131+
return UrlEncoder.encodeURIComponent(new ObjectMapper().writeValueAsString(sortMap));
132132
}
133133
catch (JsonProcessingException e) {
134134
throw new IllegalArgumentException("can't format sort parameter", e);

client/src/test/java/cn/vika/client/api/model/ApiQueryParamTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void testParamWithSort() {
3737
ApiQueryParam queryParam = new ApiQueryParam()
3838
.withSort("id", Order.DESC);
3939
Map<String, String> queryMap = queryParam.toMap();
40-
assertThat(queryMap).containsOnlyKeys("sort[]");
40+
assertThat(queryMap).containsOnlyKeys("sort%5B%5D");
4141
}
4242

4343
@Test
@@ -46,7 +46,7 @@ public void testParamWithSortMulti() {
4646
.withSort("id", Order.DESC)
4747
.withSort("name", Order.DESC);
4848
Map<String, String> queryMap = queryParam.toMap();
49-
assertThat(queryMap).containsOnlyKeys("sort[].0", "sort[].1");
49+
assertThat(queryMap).containsOnlyKeys("sort%5B%5D.0", "sort%5B%5D.1");
5050
}
5151

5252
@Test

client/src/main/java/cn/vika/client/api/util/UrlEncoder.java renamed to core/src/main/java/cn/vika/core/utils/UrlEncoder.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@
2020
* SOFTWARE.
2121
*/
2222

23-
package cn.vika.client.api.util;
23+
package cn.vika.core.utils;
2424

2525
import java.nio.charset.StandardCharsets;
2626

27-
import cn.vika.core.utils.StringUtil;
28-
2927
/**
3028
* URL Query param encoder
3129
* @author Shawn Deng
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package cn.vika.core.utils;
22

3+
import java.util.LinkedHashMap;
34
import java.util.Map;
45

5-
import org.assertj.core.util.Maps;
66
import org.junit.jupiter.api.Test;
77

8+
import static cn.vika.core.utils.UrlEncoder.encodeURIComponent;
89
import static org.assertj.core.api.Assertions.assertThat;
910

1011
/**
@@ -14,13 +15,14 @@ public class MapUtilTest {
1415

1516
@Test
1617
public void testExtractKeyToVariables() {
17-
Map<String, String> uriVariables = Maps.newHashMap("page", "1");
18+
Map<String, String> uriVariables = new LinkedHashMap<>(6);
19+
uriVariables.put("page", "1");
1820
uriVariables.put("pageSize", "10");
19-
uriVariables.put("sort[].0", "{\"field\":\"id\",\"order\":\"desc\"}");
20-
uriVariables.put("sort[].1", "{\"field\":\"name\",\"order\":\"desc\"}");
21+
uriVariables.put(encodeURIComponent("sort[].0"), encodeURIComponent("{\"field\":\"id\",\"order\":\"desc\"}"));
22+
uriVariables.put(encodeURIComponent("sort[].1"), encodeURIComponent("{\"field\":\"name\",\"order\":\"desc\"}"));
2123
uriVariables.put("recordIds.0", "rec0");
2224
uriVariables.put("recordIds.1", "rec1");
2325
String urlParam = MapUtil.extractKeyToVariables(uriVariables);
24-
assertThat(urlParam).isEqualTo("?recordIds={recordIds.0}&sort[]={sort[].0}&sort[]={sort[].1}&recordIds={recordIds.1}&pageSize={pageSize}&page={page}");
26+
assertThat(urlParam).isEqualTo("?page={page}&pageSize={pageSize}&sort%5B%5D={sort%5B%5D.0}&sort%5B%5D={sort%5B%5D.1}&recordIds={recordIds.0}&recordIds={recordIds.1}");
2527
}
2628
}

0 commit comments

Comments
 (0)