RESTful 服务。不同的响应和请求模式

RESTful service. Different response and request schema

我对 REST 的理解是资源端点应该公开相​​同的模式,而不管 HTTP VERB。例如。相同的 JSON 架构用于:

PUT /foo/
GET /foo/{id}
POST /foo/{id}

如何处理只应由服务器填充的字段。例如。 created_on, created_by, id.

我应该为每个端点使用单独的架构吗? 如果 created_on 值是由客户端发送的,什么都不做并忽略它? Return 如果客户端尝试发送错误 created_on?

My understanding of REST is that a resource endpoint should expose the same schema, irrespective of the HTTP VERB.

不完全。我们通常期望 GET 和 PUT 使用类似的表示。 POST 可以 使用相同的表示,但通常不会。

例如:在网络上我们获取 HTML 文档,但是我们 POST key/value 对 (application/x-www-form-urlencoded).

How do I handle fields that should only be populated by the server. E.g. created_on, created_by, id.

我认为将它们视为模式中的可选字段是常见的答案。

此外,请记住服务器不受请求语义的限制。 PUT 的意思是“使资源看起来像请求的主体”,但服务器对资源进行自己的更改是完全合理的。

Do nothing and ignore the created_on value if it's sent by the client?

就是这样。

您需要小心一点,不要暗示您已按原样接受所提供的表示,请参阅 RFC 7231