返回首页


真正的RESTful API意味着你有独特的唯一代表实体和集合的网址,有没有动词/网址上的行动。你不能有网址像/客户/创建/约翰/更新/客户/客户/约翰/删除的动作是表示实体的URL的一部分。一个URL只能代表一个实体的状态,如/客户/约翰代表约翰,客户的状态,并允许GET,POST,PUT,那网址删除,执行CRUD操作。相同的集合/客户返回的客户名单和一个POST到该网址去增加新的客户(S)。通常我们创建单独的控制器来处理API的网站的一部分,但我会告诉你如何创建REST风格的网站,并使用相同的控制器代码工作在精确相同的URL,可以使用浏览器浏览网站的API和客户端应用程序可以执行CRUD操作的实体。
我已经尝试创建RESTful路线斯科特谷的例子,这个,以及各种其他的例子。但他们都犯了同样的经典错误??行动是URL的一部分。你必须有网址,像http://localhost:8082/MovieApp/Home/Edit/5?format=Xml编辑一定的实体和定义的格式,如XML,你需要支持。他们不是真正的RESTful因为URL不唯一代表一个实体的状态。行动是URL的一部分。当你把URL上的行动,那么它是直接做到这一点,使用ASP.NET MVC。只有当你出来的URL采取的行动和你有支持CRUD在相同的URL,使用三种不同的格式??HTML,XML和JSON,它变得棘手,你需要一些自定义的过滤器做的工作。这不是非常棘手的,虽然,你只需要保持牢记您的控制器动作为多种格式,并以某种方式,使得它的API友好设计你的网站。你像API网址的网站的网址看看。
示例代码的ActionFilterAttribute库和ValueProvider的,使得有可能成为和接受过相同的URL的HTML,JSON和XML。一个普通的浏览器获得HTML输出,一个AJAX调用预期的JSON得到JSON响应XMLHTTP调用获取XML响应。
你可能会问为​​什么不使用WCF的REST SDK?我们的想法是重复使用相同的逻辑检索模型,并从相同的代码发出的HTML,JSON,XML,使我们不必重复在网站的逻辑,然后在API。如果我们使用WCF的REST的SDK,你必须创建一个WCF API层,复制模型处理逻辑控制器。
这里显示的例子提供了以下的RESTful网址:/客户??返回的客户名单。到这个网址POST增添了新的客户。/ Customers/C0001??编号C001产品的顾客退货细节。更新和删除在同一网址的支持。的/ Customers/C0001/Orders??返回指定客户的订单。发布这增添了新的订单给客户。/ Customers/C0001/Orders/O0001??返回一个特定的顺序,并允许在同一网址的更新和删除。
所有这些网址支持的GET,POST,PUT,DELETE。用户可以浏览到这些网址和渲染HTML页面。客户端应用程序可以让AJAX调用这些网址上执行这些CRUD的。从而使一个真正的RESTful API和网站。
{A}
他们还支持通过POST动词的情况下,你不把删除您的网络服务器或允许通过防火墙。他们通常被禁用默认情况下,在大多数网络服务器和防火墙,由于安全的共同做法。在这种情况下,你可以使用POST,并通过查询字符串的动词。例如,/ Customers/C0001?动词=删除删除客户。这不破的RESTfulness以来的网址/ Customers/C0001的唯一标识实体。你是通过额外的背景上的网址。也被用来做过滤,排序操作上的REST URL的查询字符串。例如,/客户过滤器= Johnamp;排序= Locationamp极限= 100告诉服务器返回一个客户的筛选,排序和分页的集合。
详细信息请阅读我在CodeProject的文章:
{A2的}
源代码可以在这里找到:
{A3的}
享受!奥马尔・Zabir:拉杰什・库马尔Chekuri

回答