这是对要求解释 REST的问题的跟进。
正如您从对我的回答的评论中看到的那样,我们与达雷尔·米勒( Darrel Miller)就资源的最佳媒体表现进行了小争论。我们进行了进一步的电子邮件讨论,导致了这个问题。
Darrel 和我对 REST 的理解的主要区别在于数据的语义是否是 REST API 的一部分。
Darrel 相信(我对他的话的解释 :-))数据的语义是 REST API 的重要组成部分,因此,选择的媒体表示应该反映它。因此,一个合适的 REST API 应该选择:
- 像 ATOM 这样的知名媒体来表示数据,以便尽可能多的客户端可以原生地理解资源的语义;
- 特定于应用程序的媒体类型,例如 application/vdn.mycomany.mymedia 并希望客户端了解此媒体类型以便能够使用资源数据。application/xml 不是一个很好的资源表示,因为它不表示媒体类型中的语义,但需要客户端更多地了解语义。
另一方面,我认为 REST API 是与实际数据表示不同的层。API 暴露的媒体类型只是一个传递资源数据的容器。数据的实际语义是分开处理的。因此,不理解数据的客户端仍然可以使用 REST API。Application/xml 是一种非常好的数据表示,因为它允许理解架构的客户端紧密耦合,但仍然允许不理解架构的客户端对资源进行一些基本处理。
因此,问题是:REST API 的数据语义部分吗?我们是否应该只选择媒体类型来表示实际也表示数据语义的资源表示?
如果人们在他们的答案中发布一些引文,最好是来自罗伊人本人,我会很感激。:-)