是否 RESTFul 调用具有计算值的资源表示(UI 导向,客户特定)

Is it RESTFul to call a Represention of a resource which has a calculated value ( UI oriented , Client Specific )

务实 RESTFul API 我接受以下作为对员工资源的回应

/employee/1

{
  "name":"Foo",
  "dob": "2020-06-21"
}

假设我想在我的 UI/Client 中以不同的方式实现 DOB 属性,而我无法在我的客户中轻松实现。所以我修改了我的回复,就像我的 CLIENT DEMANDS :

{
  "name":"Foo",
  "dob": "2020-06-21",
  "dobShort": "Jun 21, 2020",
  "dobLong" : "Sunday, June 21, 2020"
}

我的疑问不是关于日期格式或自定义响应,我想知道是否 RESTFul 调用共享 calculated[=34= 的响应] / UI 依赖 / 面向客户 值。

在设计 REST 响应时我需要担心客户端因素吗? 我同意在后端使用日期格式可能很愚蠢。但是,如果它在前端难以实现并且与任何资源都没有直接关系怎么办。

我的 REST 响应需要关心客户特定因素吗?

我是否遗漏了任何众所周知的 REST 合规性?

在您的 RESTful API 设计中,在响应 body 中使用多个属性以不同格式描述相同数据是不明智的。让客户端按照自己需要的方式解析数据会比较明智。在您提到的示例场景中,REST 服务器可以发送 ISO8601 格式的日期,客户端应将其转换为他们想要的版本。

虽然您可以支持各种格式的内容,但客户端可能会通过接受请求 headers(这与内容协商有关)。如果 GET all 调用的结果集太大而无法在单个调用中处理,您还可以允许分页。但如果有任何客户端特定的计算要求,最好将这项工作转移到客户端。如果将来 RESTful 服务器将有多个应用程序作为客户端与其通信,这可能会很方便。在服务器端添加特定于客户端的东西也会导致紧密耦合,从 long-term 的角度来看应用程序时,您可能不会对此感到满意。

I want to know is it RESTFul to call a response which shares a calculated / UI Dependent / Client oriented values.

是的,是的。

REST 关心 resources and representations;但对细粒度的实现细节无动于衷。特别是,REST 绝对不关心表示的某些部分是存储的,而其他部分是计算的。

这主要是重点 - 在网络上,每个服务器看起来都像一个愚蠢的文档存储,但那是因为我们对所用消息的语义有统一的约定,而不是因为我们对实现有统一的约定。

REST 不关心表示是否携带冗余信息。

Do my REST Response need to care about Client Specific Factors ?

“需要”?不,这不是必需的。而且,这不是禁止的。