【发布时间】:2015-10-14 02:36:48
【问题描述】:
我想了解在根据 REST 设计 HTTP GET 响应时应遵循哪种正确方法。我有以下要求
class Employee {
private long employeedID;
private String name;
private Date dob;
private String address;
private String department;
}
按照 REST 建模,HTTP GET /employees 将返回所有员工的数组。同样 HTTP GET /employees/1 将返回 ID 为 1 的员工
现在有一个 UI 驱动的工作流,我只需要显示每个员工的 name 和 employeeID。因此,来自 HTTP GET /employees 的现有响应是重量级的(其他字段被不必要地传输)。因此,我想将响应限制为仅包含每个员工的 name 和 employeeID。
我正在评估以下选项
方法一:
使用 Content-Type HTTP 标头指示发出 HTTP GET /employees 请求的客户端需要在响应中修剪属性列表。即在 Content-Type 中有一些自定义字符串(即 application.summary+json),这将导致响应中仅包含 2 个属性
方法二:
使用额外的查询参数作为 HTTP GET /employess?isSummary=true。在这种情况下,在服务器端,根据 isSummary 参数的值,我只能返回每个员工的 2 个属性
方法 3:
创建一个支持精简响应的新 REST 端点本身,即 HTTP GET /employees/summaryDetails
在这种情况下,上述端点中只会返回 2 个属性。
在这 3 种方法中,哪种方法最接近 REST?
谢谢
【问题讨论】:
-
查询字符串是要走的路。这是放置过滤参数的一般地方
-
好吧,我投票 #1 内容协商在这里讨论:stackoverflow.com/questions/7846900/…