18

我有一个 MVC 解决方案,它为 Web API 服务提供了一些路由。在某些情况下,我会通过简单的 HTTP get 从 JavaScript 调用这些。在其他情况下,我想从一些 .NET 代码(可能是另一个 MVC 应用程序)中调用它们。

有没有办法向这些 Web API 端点添加服务引用,并让工具创建代理客户端和 CLR 类型,就像使用典型的 WCF 服务一样?我知道这里没有涉及 SOAP,但我确实读过它是可能的,只是不知道如何。

4

3 回答 3

18

不,它是 REST 服务。REST 服务不公开用于通过服务引用创建代理的元数据(具有某些特殊形式的元数据的 WCF 数据服务除外)。使用 Web-API 的HttpClient类来调用服务。

于 2011-07-13T15:34:24.730 回答
8

我们没有任何标准机制来做到这一点。REST 是关于构建允许客户端独立于服务器发展的系统。HTTP 定义了一个统一的 GET、PUT、POST、DELETE 等接口,因此不需要方法描述。出于这两个原因,没有 REST WSDL 等价物,或者我应该说没有在 REST 社区中真正获得动力的等价物(即有 WADL)。

REST 服务中的耦合点实际上是围绕媒体类型/正文格式。为此,我们确实支持强类型机制。在 Web API 中,我们发布了一个 HttpClient(Nuget 上的 HttpClient),它允许您采用 CLR 类型并转换为某种表示形式。开箱即用,它支持 XML 和 JSON。

因此,您可以创建一个 CLR 类型并与客户端共享它,然后在客户端上使用 HttpClient。

要创建类型本身,还有几个选项。

  1. 手动创建它
  2. 使用“粘贴为 Xml”工具并使用 web api 的自动帮助页面功能进行复制/粘贴。
于 2011-09-02T16:00:01.900 回答
1

不是直接的,而是从我见过的几个示例中,使用 Web Api 涉及设置 ServiceContract。似乎如果您根据需要添加具有常规 OperationContract 和 DataContract 属性的第二个服务合同接口,那么您可以使用您选择的标准 WCF 绑定及其匹配的 MEX 端点创建一个端点。该服务将实现这两​​个接口,因此添加服务引用可以从标准 WCF 端点获取 WSDL 文档。

于 2011-07-13T15:42:22.100 回答