按作为参数传递的字段对 rest get 请求结果进行排序

Sorting rest get request results by field passed as a parameter

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

public class ExampleType {
    int firstField ; 
    String secondField ; 
}

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

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

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

比较器可以存储在静态映射中以避免 switch/case if/else:

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

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

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

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

不过这要视情况而定,如果数据需要分页,那么您可能别无选择,只能在 API 级别排序。