用于基于不同字段返回相同模型的 RESTful 端点?

问题描述

识别使用不同字段/参数获取相同模型/实体的不同 GET 端点的推荐约定是什么?

例如,有一个 Student 实体,我希望为其公开不同的 GET 端点。假设第一个 GET 端点是一个 get-by-id 端点,它根据提供的 ID 获取 Student。另一个端点可能涉及基于 Student 获取 email,但另一个端点可能用于通过 Student 获取 phone

我有几种可能的方法来设计它们的端点

  1. 使用单独的端点 /students/get-by-id/{id}/students/get-by-email/{email}/students/get-by-phone/{phone}
  2. 使用单个端点 /students 并接受诸如 /students?phone=123 之类的请求参数,然后在后端确定必须使用哪个方法获取

推荐的方法是什么?

解决方法

我会建议选项 2,因为最好保持 rest 端点干净和简单,并隐藏代码中的复杂性。另外,您不知道将来会出现哪些其他要求,例如添加新的查询字段,这需要新的休息路径。恕我直言,更改rest端点类似于更改作为生产者和消费者之间合同的接口。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...