繁体   English   中英

按作为参数传递的字段对其余获取请求的结果进行排序

[英]Sorting rest get request results by field passed as a parameter

我目前正在使用Rest API,在一个get方法中,该方法假定返回json格式的对象数组,现在我需要按作为参数传递给该方法的字段对结果进行排序。 例如考虑对象是

public class ExampleType {
    int firstField ; 
    String secondField ; 
}

现在,根据要求,Rest API用户应该可以作为参数传递“ firstField”或“ secondField”等参数,并且我应该使用此字段对包含结果对象的数组进行排序。

显然,我的模型并不像示例中那样简单,我确实有15个以上的字段,可能是我需要排序的字段,因此,此时if语句不是一个选择。 我的问题是,有人对rest api有类似的要求吗?如果是,您如何解决呢? 或者,如果对解决我的问题有什么好的建议,将不胜感激。

您应该创建一个Comparator ,然后使用它来对数据进行排序。

比较器可以存储在静态映射中,如果/其他情况,则避免开关/情况:

map.put("fieldName", Comparator.comparing(ExampleType::getFirstField));

您可以使用thenComparing方法组合两个或多个比较器。

唯一的其他选择是使用反射创建适当的比较器。

注意: API使用者的要求通常不是应该在API本身中实现的要求。 您可能还认为排序输出实际上是显示问题,而不是API需要考虑的问题。

但是,这取决于情况,如果需要对数据进行分页,则除了在API级别进行排序之外,您别无选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM