Rails 世界中是不是有与 ASP.NET Web API 等效的工具?

Posted

技术标签:

【中文标题】Rails 世界中是不是有与 ASP.NET Web API 等效的工具?【英文标题】:Is there an equivalent to ASP.NET Web API in the Rails world?Rails 世界中是否有与 ASP.NET Web API 等效的工具? 【发布时间】:2012-04-08 10:16:11 【问题描述】:

Rails 本身是否适合开发 API?

似乎 ASP.NET Web API 项目类型有一些与 WCF 交织在一起的历史(例如,this 帖子中有详细说明),所以它可能不适用于 Rails。

更新

为了澄清,微软有 ASP.NET MVC 框架。最近,他们推出了一个名为ASP.NET Web API 的框架。 ASP.NET Web API 似乎与 ASP.NET MVC 有相似之处,但专门针对 RESTful Web 服务进行了精简。 Ruby/Rails 领域有没有等价物?

【问题讨论】:

@kprobst 是对的,您的问题含糊不清。 API 只是与程序/服务交互的一种方式。您可能应该看看 RESTfulSOAP 澄清一下,微软有 ASP.NET MVC 框架。最近,他们推出了一个名为ASP.NET Web API 的框架。 ASP.NET Web API 似乎与 ASP.NET MVC 有相似之处,但专门针对 RESTful Web 服务进行了精简。 Ruby/Rails 领域有没有等价物? 【参考方案1】:

所以,这两个问题的答案都是Rails 确实有一个等价物及其Rails

ASP.NET Web API 看起来它的核心只是一个带有类型协商的RESTful router。我可能完全不在这里,但从教程中我看到这就是我的样子。

所以是的,据我所知,Rails 支持 Web API 所创建的大部分内容。事实上,在 Rails 中,大部分这些东西都是强制给你的,直到你获得足够的信息能够改变它(假设到那时你知道比实际这样做更好)。

但是,就Web API 功能而言。这真的来自支持HTTP verbs(GETPOSTPUTDELETE)的能力,Rails 确实如此。

但混淆的来源可能是Rails 中的 RESTful API 实际上是应用程序本身。这意味着您不需要实现任何其他库,它就是这样构建的。

这是我的意思的一个简单示例 当您点击/users/1 时,您将根据您请求的格式获得与该用户关联的数据。所以如果你请求 JSON 控制器返回 JSON, HTML 你得到 HTML, XML 你会得到 XML 等(只要为该资源实现了上述格式)

以下两个部分很好地概述了我所说的内容:Rails Guides::Controller: Rendering xml and json dataRails Guides::Routing: Resources on the Web

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

但根据我对此事的有限知识,我会说 ASP.NET MVC with ASP.NET Web API 程序实际上更像是一个 Rails Program > 比他们之前的常规 ASP.NET MVC 程序。

或者这只是一个聪明的策略,在标题中尽可能多地使用大写字母。

【讨论】:

很好的答案 - 谢谢!当您描述 Rails 如何根据请求的格式响应请求时,我就明白了。 嗯,与两者都合作过,我不同意 - rails 更加冗长,并不是一个很好的比较。 Rails 具有更多通常公开的功能。当然,您可以在 web api 中进行内容类型协商,但通常情况下,“控制器”对此并不感兴趣,只是对序列化程序感兴趣。而且 rails 不会自动“解包/验证”参数,也不会自动序列化返回值。 基本上,在实际使用中,rails控制器方法通常是一些处理http级细节的代码,用输入/输出模式包装概念方法;而 web api 使大部分冗余,隐式地将底层方法参数映射到 http 级参数,并将底层返回值映射到一些内容协商的序列化形式。 那么您应该添加另一个答案,而不是添加 cmets。我不怀疑它会比我的答案更好。我从来没有使用过Web API,所以我只是从我一眼就能理解的内容中解脱出来。【参考方案2】:

看看grape。它是 ruby​​ 中的纯“Rest”HTTP API 框架。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

哇,两个答案都在几分钟内被否决为 -1。我想我应该避免试图帮助有模糊问题的人。 我的意思是微软所说的“ASP.NET Web API”(该项目的正式名称),我认为这是针对开发 Web 服务的 ASP.NET MVC 的一种变体。 仍然不确定您在说什么,抱歉。我想,ASP.NET 只是在您针对它编写的意义上是一个“API”。但我不认为这就是你的意思。 哦,我现在明白了,对不起。嗯,这只是 MVC4 之上的一种 RESTful 层。如果有的话,我认为它可以更容易地做 Ajax 的东西。您仍然可以(在一定程度上)使用 WCF 绑定来做到这一点,这只是将其带到表示层并使其更易于使用。话虽如此,我不知道 Rails 中是否有等价物,但我也不知道这与 WCF 有什么关系。 不多,只是看起来接收 WCF 请求的架构高度嵌入了解密请求的标头和 MIME 类型的能力。【参考方案5】:

好的,这不是您的问题的直接答案,但是似乎有些混乱... Microsoft 的 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,而不是像 WCF 那样的 TCP/Binary/Piped/etc...。如果你问

【讨论】:

ASP.NET Web API 和 ASP.NET MVC 是完全独立的。一个不是另一个内部的“提供”。 ASP.NET MVC 相当于在 RoR 应用程序中返回复合 html 网页,而 ASP.NET Web API 相当于返回协商格式的“仅数据”。在 ASP.NET 中 MVC 和 Web API 分开的原因是底层管道非常不同,而 Web API 管道针对 API 的使用进行了更多优化。【参考方案6】:

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

【讨论】:

以上是关于Rails 世界中是不是有与 ASP.NET Web API 等效的工具?的主要内容,如果未能解决你的问题,请参考以下文章

是否有与 Grails 的 Rails 命令/功能“rake routes”等效的功能?

是否有与 Rails bundler-audit 等效的 Python/Django?

Java/struts/jsp 中是不是有类似 ASP.NET 网络用户控件的东西

Windows CMD 中是不是有与 bash 或 tcsh 中等效的源命令?

如何修改 ASP.NET MVC 静态文件根目录

ASP.NET 数据缓存设计