gpt4 book ai didi

rest - 如何将 PageRequest 对象转换为查询字符串?

转载 作者:行者123 更新时间:2023-12-01 04:58:14 26 4
gpt4 key购买 nike

我正在编写一个使用另一个 RESTful 数据 APIRESTful API,并且我正在使用 Spring Data。

客户端使用如下查询参数发送页面请求:
http://api.mysite.com/products?page=1&size=20&sort=id,asc&sort=name,desc

然后我将 params 转换为 PageRequest 对象并将其传输到服务层。

在服务中,我想使用 TestTemplate 与使用 URL 的数据 API 进行交互,如何将 PageRequest 对象转换为查询字符串,例如

page=1&size=20&sort=id,asc&sort=name,desc

然后我可以像这样请求数据:

restTemplate.getForEntity("http://data.mysite.com/products?page=1&size=20&sort=id,asc&sort=name,desc",String.class)                    

最佳答案

我知道我回答这个问题有点晚了,但我也无法找到一个已经实现的方法来做到这一点。我最终开发了自己的程序来执行此操作:

public static String encodeURLComponent(String component){
try {
return URLEncoder.encode(component, "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("You are dumm enough that you cannot spell UTF-8, are you?");
}
}

public static String queryStringFromPageable(Pageable p){
StringBuilder ans = new StringBuilder();
ans.append("page=");
ans.append(encodeURLComponent(p.getPageNumber() + ""));

// No sorting
if (p.getSort() == null)
return ans.toString();

// Sorting is specified
for(Sort.Order o : p.getSort()){
ans.append("&sort=");
ans.append(encodeURLComponent(o.getProperty()));
ans.append(",");
ans.append(encodeURLComponent(o.getDirection().name()));
}

return ans.toString();
}

它不完整,可能有一些我遗漏的细节,但对于我的用户案例(我认为对于大多数用户案例)这是有效的。

关于rest - 如何将 PageRequest 对象转换为查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37582789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com