我有一个使用ASP.NET MVC3开发的网站 我现在想要公开一个REST API供其他人使用,它将公开与网站相同的功能。
在网站中,一旦用户登录并根据数据库验证了凭据,该会话将管理用户的登录状态。
我如何使用REST API执行等效操作,其中暴露的许多方法要求用户登录(或至少具有有效的用户名和密码)?
除此之外,网站的最佳方法是使用REST API(假设API涵盖了网站所需的所有功能)吗?
ASP.NET MVC3的适用性如何 - 当然考虑到该网站已经存在使用此框架?
答案 0 :(得分:9)
我在几年前写了一篇关于如何[在ASP.NET MVC 3应用程序中构建RESTful API架构] 的博客文章,最终不得不放弃该网站。 :( 如果你想在你的MVC应用程序中构建REST API,这可能是一个好的开始。
@tugberk使用WebAPI查看answer以获得一个好的解决方案。
答案 1 :(得分:6)
ASP.NET MVC非常适合这种情况。虽然您可以使用其他方法(如WCF),但我会坚持使用MVC,因为您已经有一个需要为其他消费者公开的工作站点。
另见我的另一个答案:
Which is better for building an API for my website: MVC or Ado.net data services?
答案 2 :(得分:4)
注意:强>
WCF Web API现在是ASP.NET Web API,并且已经发生了很大变化。测试版 版本现已推出。有关详细信息:Getting Started With ASP.NET Web API - Tutorials, Videos, Samples
我会选择WCF Web Api来做到这一点。 ASP.NET MVC也很好,能够公开您的数据,但如果您考虑向用户公开数据,WCF Web Api更有能力。它易于使用并将REST Web API集成到您的系统中。
对于身份验证,API Key始终是此类方案的最佳方式。以下是如何使用WCF Web API实现API Auth的一个很好的示例:
注意:强>
他们刚刚发布了几周前的预览版本 消息通道已更改为消息处理程序,直到我 知道。但上面的文章应该给你一个想法。
对于安全性实现,以下内容也可能有所帮助:
答案 3 :(得分:1)
ASP .NET MVC是一个很好的选择。我创建了几个ASP MVC,它们充当RESTful服务以及网站。
总结我使用的设计范例,每个控制器都有一个动作,它发出所请求数据的JSON表示。所述数据被加载到服务器上的视图模型中,并且内置的JSON序列化器负责服务器端,而jQuery视图很好地加载数据以供我的实际网页使用。
站点本身在每个控制器上都有索引操作,这些操作会发出必要的标记,但不会释放数据。页面上的jQuery document.ready方法从基本上我的rest api加载数据,但是直接构建到站点中。
结帐书呆子晚餐,获取精彩示例代码。 http://nerddinner.com/
关于安全问题,我认为我的经历会与您的不同。如果您的用户都在同一个域中并具有AD凭据,则ASP MVC可以非常好地与活动目录集成。这是我使用的唯一方法,轻松,成功和满意。
我让同事与其他API交互,这些API在调用授权方法时分发令牌。收到的令牌将是客户负责存储和交回每个请求的责任,但我无法通过实施细节与您交谈,因为我没有相关人员的经验。
答案 4 :(得分:1)
我将使用基于WCF Web服务的实现,如下所示。
如果用户正在使用它,则缓存会不断扩展。
在wcf服务方面,
创建API以在身份验证上返回令牌
所有wcf方法都有此会话ID,需要进行验证
优点是wcf方法可以暴露为返回xml或json格式,也可以用作普通的Web服务。
[WebInvoke(Method =“GET”,ResponseFormat = WebMessageFormat.Xml,BodyStyle = WebMessageBodyStyle.Bare,UriTemplate =“/ MyModule / XML / GetData / {customerSessionId}”)] [WebInvoke(Method =“GET”,ResponseFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped,UriTemplate =“/ MyModule / JSON / GetData / {customerSessionId}”)]