gpt4 book ai didi

java - REST 中需要返回 2 组不同响应的 HTTP GET 响应的正确设计原则是什么

转载 作者:行者123 更新时间:2023-11-29 04:57:48 27 4
gpt4 key购买 nike

我想了解在根据 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 驱动的工作流程,我只需要显示每位员工的姓名employeeID。因此,来自 HTTP GET/employees 的现有响应是重量级的(其他字段被不必要地传输)。因此,我想将响应限制为仅包含每位员工的姓名employeeID

我正在评估以下选项

方法一:

使用 Content-Type HTTP header 指示发出 HTTP GET/employees 请求的客户端需要在响应中修剪属性列表。即在 Content-Type 中有一些自定义字符串(即 application.summary+json),这将导致只有 2 个属性包含在响应中

方法 2:

使用额外的查询参数作为 HTTP GET/employess?isSummary=true。在这种情况下,在服务器端,根据 isSummary 参数的值,我可以只返回每个员工的 2 个属性

方法 3:

创建一个新的 REST 端点本身,支持精简响应,即 HTTP GET/employees/summaryDetails

在这种情况下,只有 2 个属性会在上述端点中返回。

在这 3 种方法中,哪种最接近 REST?

谢谢

最佳答案

我认为方法 #2 领域中的某些东西是实现此目的的方法。从根本上说,您仍然在访问资源(员工)方面的相同搜索和结果集,并且是相同的资源。所以方法 #3 并不适合。

也就是说,有多种方法可以解决#2。一种方法是使用一个表示投影的查询字符串参数——有点像 SQL 投影。所以像这样:

GET /employees?fields=ID,name

我使用过一些以这种方式工作的 API,它们运行良好。

关于java - REST 中需要返回 2 组不同响应的 HTTP GET 响应的正确设计原则是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33115688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com