将WebAPI用于包括网站在内的所有内容



我正在构建一个网站,并使用WebAPI为其创建了一个API。该API使用OAuth v1使用DotNetOpenAuth进行保护,并且通过调用API的iPhone应用程序运行良好。我想回过头来让网络的相关部分也使用 API,以便 evrything 始终通过 API。

我有点困惑的部分是,如果我让我的网站登录通过 API,将网站设置为OAuth 消费者,为当前用户获取 OAuth 令牌,然后我是否应该在网站代码中对同一框上的 WebAPI 进行 http 调用以调用传递我的 OAuth 令牌的 API?(在 HTTP 身份验证标头中)

让网站调用 API 似乎是一种效率低下的方法,因为所有调用都需要服务器端进行 HTTP 调用,对我来说听起来不是特别可扩展吗?我不确定替代方案,但我想使用 OAuth 来保护 API。

这是一个很好的问题,并且不断出现(因为您清楚地意识到拥有另一个网络绑定跃点的开销):

我是否需要在 ASP.NET MVC 中使用自己的 API,还是绕过 API 直接进入业务逻辑?

我试图在一篇博客文章中解释这一点(在文章末尾)。但是,简而言之:这取决于。如果您的 API 和 MVC 站点是同一应用程序的一部分,那么它们彼此相邻,因为它们都是表示层 - 正如我在帖子中解释的那样。但是,如果您的 API 是 SOA 服务的表示层,并且由包括您的 MVC 站点在内的多个客户端使用,那么是的,它必须是独立的。

在您的情况下,我倾向于将 MVC 并排放在您的 Web API 旁边 - 访问相同的业务层。我相信这也解决了您遇到的OAuth问题。

最新更新