问题 在Rails世界中是否有与ASP.NET Web API相同的东西?


或者Rails本身是否适合开发API?

似乎ASP.NET Web API项目类型有一些与WCF交织在一起的历史(详见中) 这个 发帖例如),所以也许它不适用于Rails。

UPDATE

为了澄清,Microsoft拥有ASP.NET MVC框架。最近,他们推出了一个名为的框架 ASP.NET Web API。 ASP.NET Web API似乎与ASP.NET MVC有相似之处,但是专门针对RESTful Web服务进行了修剪。 Ruby / Rails空间中是否有等价物?


1053
2018-03-23 20:40


起源

@kprobst是对的,你的问题很模糊。 API 只是一种与程序/服务交互的方式。你应该看看 REST风格 和 肥皂。 - Azolo
为了澄清,Microsoft拥有ASP.NET MVC框架。最近,他们推出了一个名为的框架 ASP.NET Web API。 ASP.NET Web API似乎与ASP.NET MVC有相似之处,但是专门针对RESTful Web服务进行了修剪。 Ruby / Rails空间中是否有等价物? - Derek Morrison


答案:


所以,答案是  两个问题。 Rails 确实有一个等价物和它的 Rails

ASP.NET Web API 看起来它的核心只是一个 RESTful路由器 与类型谈判。一世 可以 完全不在这里,但从教程中我看到了它对我来说的样子。

是的, 从我所知道的,Rails支持大部分事情 Web API 是为...创建的。实际上在Rails中,大部分内容都是 被迫 在你获得足够信息以便能够改变它之前(假设你知道这比实际做的更好)。

但是,就...而言 Web API 功能。这真的来自支持能力 HTTP动词 (GETPOSTPUTDELETE) 哪一个 Rails 确实。

但混淆的根源可能在于 Rails RESTful API实际上就是应用程序本身。这意味着您不需要实现任何其他库,它只是以这种方式构建。

这是我的意思的一个简单例子
当你击中 /users/1 您将获得与该用户关联的数据,具体取决于您请求的格式。所以,如果你要求 JSON 控制器返回 JSONHTML 你得到 HTMLXML 你得到 XML等等(只要为该资源实施了所述格式)

我正在谈论的内容的完整概述在以下两个部分中:
Rails指南::控制器:渲染xml和json数据
Rails指南::路由:Web上的资源

因此,您可以在Rails应用程序中构建网站,API或两者,并且它们都将以相同的方式启动。

但是从我的 有限 关于此事的知识,我会说一个 ASP.NET MVC with ASP.NET Web API 程序实际上更像是一个 Rails Program 比常规 ASP.NET MVC 摆在他们面前的节目。

或者这只是一个聪明的策略,可以尽可能多地获得大写字母。


11
2018-03-24 17:48



很好的答案 - 谢谢!当您描述Rails如何根据请求的格式回答请求时,这一切都为我而来。 - Derek Morrison
嗯,与两者合作,我不得不反对 - rails更冗长,并不是一个很好的比较。 Rails具有更多通常暴露的功能。相信你 能够 在web api中进行内容类型协商,但通常情况下,这是“控制器”不感兴趣的东西,只是串行器。 rails不会自动“解包/验证”参数,也不会自动序列化返回值。 - Eamon Nerbonne
基本上,在实际使用中,rails控制器方法通常是一些代码来处理包含具有输入/输出模式的概念方法的http级细节;和web api大部分都是冗余的,隐式地将底层方法参数映射到http级参数,并将底层返回值映射到一些内容协商的序列化形式。 - Eamon Nerbonne
然后,您应该添加另一个答案,而不是添加评论。我不怀疑它会比我的回答更好。我从来没用过 Web API 所以我只是一眼就看出了我理解的东西。 - Azolo
还有rails-api(github.com/rails-api/rails-api) - adaam


看一眼 葡萄。它是ruby中纯粹的“Rest”HTTP API框架。


3
2018-03-23 21:04





WSO2 看起来像一个通用的Web服务框架(与像Rails一样的MVC)我无法保证它,但它似乎更像是WCF Web API风格的服务框架(通用意义上的服务,而不仅仅是SOAP)。


1
2018-03-23 21:01





很难知道“API”是什么意思...... Rails和ASP用于开发网站,而WCF本质上是一个Web服务平台。 ASP和WCF几乎没有共同之处,ASP应用程序使用WCF服务是正常的,因为它们都运行在同一堆栈和平台上。

我想微软方面的Rails将是ASP.NET MVC,Linq2SQL或EntityFramework和一些WCF的组合。


0
2018-03-23 20:44



哇,两个答案都在几分钟内被低估了-1。我想我应该避免试图用模糊的问题帮助人们。 - kprobst
我的意思是微软的意思是“ASP.NET Web API”(项目的正式名称),我认为它是针对开发Web服务而定制的ASP.NET MVC的变体。 - Derek Morrison
还不确定你在谈论什么,抱歉。从某种意义上说,ASP.NET是一种“API”,我认为它是针对它的。但我不认为这就是你的意思。 - kprobst
我在说 这个 具体项目/框架。 - Derek Morrison
哦,我现在明白了,抱歉。嗯,这只是MVC4上的一种RESTful层。如果有什么我认为它可以更容易做Ajax的东西。您仍然可以使用WCF绑定(在某种程度上)这样做,这只是将它带到表示层并使其更容易使用。说了这些,我不知道Rails中是否有相同的东西,但后来我也看不出与WCF有什么关系。 - kprobst


好吧,这不是你的问题的直接答案,但似乎有些混乱......微软的ASP.NET Web API特别是ASP.NET MVC 4+的产品。它是一个RESTful框架。它与RoR相比如何?我不知道从未尝试过在Windows上安装RoR。与其他任何事情一样,经验也各不相同......还要尝试将我们的语言,构造,上下文和框架思考。开发API是否更好?如果您使用的是Linux / Unix,答案可能是肯定的。如果你在Windows服务器上,问题有点棘手。

最后,

在ASP.NET Web API中编写与WCF有0%的关系。也许它是在幕后实现的,但是ASP.NET Web API(从我所见过并用它完成的)严格来说是HTTP绑定的API,而不是TCP / Binary / Piped / etc ...就像WCF一样。如果你问的话


0
2017-07-05 18:29



ASP.NET Web API和ASP.NET MVC是完全独立的。一个不是另一个“提供”。 ASP.NET MVC与在RoR应用程序中返回复合HTML网页相当,而ASP.NET Web API与以协商格式返回“仅数据”相当。 MVC和Web API在ASP.NET中是分开的原因是底层管道非常不同,并且Web API管道针对API使用进行了更加优化。 - bzlm


是。它被称为Grails。它使用弹簧。有大量的插件可供使用,它使创建Web应用程序变得轻而易举。阅读更多相关信息 这里


-2
2018-03-23 20:44