如何发现非SOAP Web API的合同?

时间:2010-05-01 13:44:58

标签: rest soap xml-rpc

假设我拥有RESTful或其他无合约API的URI。是否有可能以编程方式确定其接口?我正在使用C#/ ASP.net MVC,不确定这是否重要。

我知道不会有已发布的合同,但我想知道是否有一些我没想到的(通常有)。

2 个答案:

答案 0 :(得分:2)

没有。不幸的是,你是对的。除了已发布的文档之外,通常没有RESTful API的合同。

答案 1 :(得分:1)

如果系统是RESTful,则返回的表示将为您提供指向可用端点的链接。这些链接很容易以编程方式发现。请参阅this示例。

内容类型HTTP标头应该告诉您返回的信息类型。假设您的客户端应用程序了解该媒体类型,那么您应该拥有使用该服务所需的所有信息。

不幸的是,返回通用媒体类型(例如application / xml和application / json)已经变得司空见惯,它们不再告诉您有关内容的信息,而不是如何解析内容。如果是这种情况,那么您的客户端将需要存储一些关于预期来自特定URL的数据类型的其他信息。这是令人讨厌的耦合,但在人们开始真正理解“自我描述性”REST约束之前,这是一个必要的恶魔。