代码之家  ›  专栏  ›  技术社区  ›  Chris McCall

如何发现非SOAP Web API的契约?

  •  3
  • Chris McCall  · 技术社区  · 14 年前

    假设我有用于RESTful或其他无契约API的URI。是否可以通过编程确定其接口?我正在使用C/ASP.NET MVC,不确定这是否重要。

    我知道不会有一个公开的合同,但我想知道是否有一些我没有想到的东西(通常是有的)。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Darrel Miller    14 年前

    如果系统是RESTful的,那么返回的表示将为您提供指向可用端点的链接。这些链接很容易通过编程发现。见 this 例子。

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

    不幸的是,返回诸如application/xml和application/json之类的通用媒体类型已经变得司空见惯了,它们只告诉您如何解析内容。如果是这种情况,那么您的客户机将需要存储一些关于期望从特定URL获得什么数据类型的附加信息。这是令人讨厌的耦合,但在人们真正开始理解“自我描述”的REST约束之前,这是一种必要的邪恶。

        2
  •  2
  •   Pablo Santa Cruz    14 年前

    不。不幸的是,你是对的。除了发布的文档之外,通常没有与RESTfulAPI签订任何合同。