获取页面或列表 - 使用Spring Boot获取值为null的页面

时间:2018-01-24 11:21:02

标签: spring rest spring-boot

我喜欢提供获取列表或页面的端点。清单将包括所有可用资源。要获取列表,客户端将不会提供pageper_page参数。

不幸的是,我无法在我的REST控制器中检测到这种情况,因为当客户端没有提供一个offset=0size=20时,Spring Boot会自动提供一个Pageable对象。 我无法区分提供分页参数的用户和提供默认参数的Spring启动。

因此我无法知道客户想要完整列表。

我目前的解决方案是复制端点并将后缀/all附加到提供List的那个。这不太令人满意。

在单个端点中提供这两个要求是否有意义? 如果是的话,我该如何实现呢?如果不是,您将如何提供该功能?

1 个答案:

答案 0 :(得分:0)

您可以实现HandlerMethodArgumentResolver并在命中控制器之前检查是否存在参数。检查以下代码:

    public class PaginationHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterType().equals(Pageable.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
                                  NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {


        String pageParam = webRequest.getParameter("page");
        String sizeParam = webRequest.getParameter("size");
        String sortParam = webRequest.getParameter("sort");


    }
}