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