统一的界面
统一接口约束是任何 REST 服务设计的基础。 [14] 统一的接口简化并解耦了架构,使每个部分都可以独立发展。该接口的四个指导原则是:
资源识别
在请求中标识单个资源,例如在基于 Web 的 REST 系统中使用 URI。资源本身在概念上与返回给客户端的表示是分开的。例如,服务器可以从其数据库中以 HTML、XML 或 JSON 的形式发送数据,这些都不是服务器的内部表示,无论如何它都是同一个资源。
通过这些表示来操纵资源
当客户端持有资源的表示,包括任何附加的元数据时,它有足够的信息来修改或删除资源。
自我描述的消息
每条消息都包含足够的信息来描述如何处理该消息。例如,调用哪个解析器可以由 Internet 媒体类型(以前称为 MIME 类型)指定。响应还明确表明它们的可缓存性。
超媒体作为应用程序状态的引擎(AKA HATEOAS)
客户端仅通过服务器在超媒体内动态识别的动作(例如,通过超文本中的超链接)进行状态转换。除了应用程序的简单固定入口点之外,客户端不假定任何特定操作可用于任何特定资源,而不是先前从服务器接收的表示中描述的那些。
我正在听一个关于这个主题的讲座,讲师说:
“当有人使用我们的 API 时,如果您能够获取客户对象并且您知道有订单对象,那么您应该能够以与获取客户对象相同的模式获取订单对象。这些 URI 是会看起来像彼此。”
这让我觉得错了。与 URI 的外观或一致性无关,因为它是 URI 的使用方式(识别资源、通过表示、自描述消息和仇恨来操纵资源)。
我认为这根本不是统一接口的意思。它到底是什么意思?