我对 REST 的理解是,资源端点应该公开相同的架构,而不管 HTTP 动词如何。例如。相同的 JSON 模式用于:
async
如何处理只能由服务器填充的字段。例如。 PUT /foo/
GET /foo/{id}
POST /foo/{id}
、created_on
、created_by
。
我应该为每个端点使用单独的架构吗?
如果 id
值是由客户端发送的,那么什么都不做并忽略它?
如果客户端尝试发送 created_on
?
答案 0 :(得分:1)
我对 REST 的理解是资源端点应该公开相同的架构,而不管 HTTP VERB。
这完全不对。我们通常希望 GET 和 PUT 使用类似的表示。 POST 可以使用相同的表示,但通常不会。
例如:在网络上我们获取 HTML 文档,但我们 POST 键/值对 (application/x-www-form-urlencoded)。
<块引用>如何处理只能由服务器填充的字段。例如。 created_on、created_by、id。
我认为,将它们视为架构中的可选字段是常见的答案。
另外,请记住,服务器不受请求语义的约束。 PUT 的意思是“让资源看起来像请求的主体”,但服务器对资源进行自己的更改是完全合理的。
<块引用>如果客户端发送了 created_on 值,则什么都不做并忽略它?
就这样。
您需要小心一点,不要暗示您已按原样接受所提供的表示,请参阅RFC 7231。