对作为参数

时间:2017-02-20 10:59:44

标签: java rest spring-rest

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

public class ExampleType {
    int firstField ; 
    String secondField ; 
}

现在根据要求,Rest API用户应该能够作为参数传递" firstField"或" secondField"我应该使用这个字段对包含结果对象的数组进行排序。

显然我的模型并不像示例那么简单,我确实有超过15个字段可能是我需要排序的字段,因此此时if else语句不是一个选择。我的问题是,是否有人对休息api有类似的要求,如果是这样,你是如何解决它的?或者对我的问题的优雅解决方案可能提出的任何建议都将非常感激。

1 个答案:

答案 0 :(得分:0)

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

比较器可以存储在静态映射中以避免切换/情况if / else:

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

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

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

注意:API消费者的要求通常不是应在API本身中实现的要求。您可能还会认为排序输出实际上是显示问题,而不是API需要关注的内容。

这取决于具体情况,如果需要对数据进行分页,那么除了在API级别进行排序之外,您可能没有其他选择。