我知道这个问题太宽泛,无法用简单的“使用此框架”来回答,但我非常感谢您对该框架的建议。
我希望制作一个(相当复杂的)项目,而不是运行API。我对任何编程语言(主要是PHP,Python,Java)持开放态度,并发现许多框架更专注于构建RESTful Web服务器。
我唯一的主要限制是,我将拥有一个可重用,简单且非代码意义独立的软件包,以便以后轻松改进我的API,甚至可以毫不费力地切换到其他框架。
对于Python& Java,我想过制作一个专用包。每个动作都会调用包中的专用方法,包将返回object / dict,动作会将其转换为正确的格式。
经过多次研究,我对两个可能对我的工作有益的框架犹豫不决,但我需要你的建议因为我不会在这里犯任何错误。
为了在生产中使用它们,使用apache& amp; mod_proxy或nginx。
所以,我的问题很简单:你会选择什么(在这两者或其他人之间,我不接受建议)以及为什么?
非常感谢您的建议!
答案 0 :(得分:14)
我最喜欢的RESTful Web App开发框架是Restlet。它是一个Java框架/库(它可以被认为是),但它适用于Jython和JRuby,所以如果您更喜欢这些语言,您仍然可以使用它。我主要使用Groovy。
我更喜欢Restlet因为:
它的API完全包含并与RESTful范例保持一致,因此它鼓励您以REST的方式工作。例如,当Router
将请求路由到ServerResource
时,它会为每个请求创建ServerResource
的新实例。这鼓励实施无国籍。并且有一个丰富的类层次结构,其中包含实现RESTful Web应用程序所需的所有概念:客户端,服务器,协议,VirtualHost,请求,响应,媒体类型,状态等。
它的API包括用于编写服务器和客户端的类,它们非常一致且几乎是对称的。例如,有一个ServerResource
类和一个ClientResource
类。 ServerResource.get()
和ClientResource.get()
都返回Representation
。唯一的区别是您实施ServerResource.get()
并生成响应表示,同时调用ClientResource.get()
并接收回复表示。
API与Java约定一致。例如,如果使用ClientResource.get()
发出的请求收到错误响应(如401),则会抛出ResourceException
。如果您正在实施ServerResource
并希望返回错误状态,那么您只需抛出一个ResourceException
(RuntimeException
,这很好。)
通过它的扩展机制,它可以很好地与各种最好的Java库一起使用。扩展包括各种HTTP客户端和服务器库,数据库,模板库,安全库,数据库,如XML,JSON,OAuth,OData等,甚至OSGI。
部署非常灵活。您可以在现有Java应用程序,现有Java Servlet应用程序或任何标准Java Web App(Servlet)服务器中嵌入Restlet驱动的API。或者您可以使用嵌入式HTTP服务器(如Jetty)构建独立服务器应用程序 - 这是我的首选方法。因为它在JVM上运行,所以它几乎可以在任何硬件或操作系统上运行。
它成熟,可靠,负责任地维护,稳步提升,并得到社区和商业界的充分支持。
它是开源的,并且具有非常清晰且结构良好的代码。开发人员很乐意接受任何贡献。我已经提交了一些补丁,让他们快速上台,没有戏剧性。
我建议的其他选项是Python微框架Bottle和Ruby微框架Sinatra。它们既简单,直观,轻便又有效。因为它们与WSGI和Rack堆栈一起使用,所以有一组丰富的“中间件”模块可以很容易地与它们一起使用。