【发布时间】:2010-05-01 13:44:58
【问题描述】:
假设我有 RESTful 或其他无合同 API 的 URI。是否可以以编程方式确定其接口?我正在使用 C#/ASP.net MVC,不确定这是否重要。
我知道不会发布合同,但我想知道是否有什么我没有想到的(通常有)。
【问题讨论】:
假设我有 RESTful 或其他无合同 API 的 URI。是否可以以编程方式确定其接口?我正在使用 C#/ASP.net MVC,不确定这是否重要。
我知道不会发布合同,但我想知道是否有什么我没有想到的(通常有)。
【问题讨论】:
没有。不幸的是,你是对的。除了已发布的文档之外,通常没有与 RESTful API 签订的合同。
【讨论】:
如果系统是 RESTful,则返回的表示将为您提供指向可用端点的链接。这些链接很容易以编程方式发现。请参阅this 示例。
内容类型 HTTP 标头应该告诉您正在返回什么类型的信息。假设您的客户端应用程序了解该媒体类型,那么您应该拥有使用该服务所需的所有信息。
不幸的是,返回诸如 application/xml 和 application/json 之类的通用媒体类型已变得司空见惯,它们只告诉您有关内容的更多信息,而只是如何解析它。如果是这种情况,那么您的客户端将需要存储一些关于预期来自特定 URL 的数据类型的附加信息。这是令人讨厌的耦合,但在人们真正开始理解“自我描述”REST 约束之前,这是一种必要的邪恶。
【讨论】: