我开始用Java实现一个RESTful架构(使用新的JAX-RS标准)项目
我们正计划发展与Flex应用程序的GUI。 我已经发现了一些问题与使用HTTPService组件(响应错误代码,头访问...)这个实现。
任何你们有类似的项目的一些经验。 是否可行?
我开始用Java实现一个RESTful架构(使用新的JAX-RS标准)项目
我们正计划发展与Flex应用程序的GUI。 我已经发现了一些问题与使用HTTPService组件(响应错误代码,头访问...)这个实现。
任何你们有类似的项目的一些经验。 是否可行?
这里的问题是,很多解决此问题的网上讨论的是一年或者更老。 我通过与此相同的研究工作,现在,这是我今天所学到的。
此IBM开发工作从2008年8月的文章由豪尔赫Rasillo和迈克·伯尔展示了如何做一个Flex前端/ REST风格的后端应用程序(在PHP和Groovy的例子)。 好的文章。 总之,这里的带走:
// Flex doesn't know how to generate an HTTP DELETE. // Fortunately, sMash/Zero will interpret an HTTP POST with // an X-Method-Override: DELETE header as a DELETE. deleteTodoHS.headers['X-Method-Override'] = 'DELETE';
这里发生了什么事? IBM的Web服务器截获并解释“POST用DELETE”作为DELETE。
所以,我进一步挖掘,发现了这个帖子和讨论唐盒 (原SOAP的球员之一)。 显然,这是因为有些浏览器比较规范行为等方面不支持PUT和DELETE,并且是一个变通一个已经存在了一段时间。 这里有一个片断,但有更多的讨论。
“如果我是建设的GData客户端,我真的不知道为什么我会打扰使用DELETE和PUT方法都考虑到X-HTTP-方法,覆盖将会在更多情况下/部署工作。”
我采取远离这一切是,如果你的网络方面则支持这种X-方法-Override标头,那么你可以使用这种方法。 唐盒评论让我认为这是相当不错的支持,但我还没有证实,但。
另一个问题出现左右能够读取HTTP响应头。 此外,从2007年的一篇博客文章由弥敦道德弗里斯 ,我们看到了这个讨论。 他跟进该博客文章和讨论自己的意见:
“在网络上前面的唯一的变化是,Flash播放器(当然那些与Flex 3测试版提供)的较新版本目前支持的情况下,responseHeaders响应特性HTTPStatusEvent。”
我希望这意味着它是一个非问题了。
正如许多人所指出HTTPService
是有点过于简单,没有做所有你想做的事。 然而, HTTPService
是在顶部只是糖flash.net.*
类,如URLLoader
, URLRequest
和URLRequestHeader
。 使用这些你可以组装最HTTP请求。
当谈到其他方法比支持GET和POST问题主要在于,一些浏览器(如Safari浏览器)不支持这些,和Flash Player依赖于浏览器的所有它的网络。
还有的Flex的作为一个纯粹的RESTful客户端的能力一定的缺点。
下面的评论是从这个博客 :
问题是HTTPService类有几个主要的局限性:
- 只有GET和POST方法支持开箱即用的(除非你用FDS和设置useProxy属性设置为true)
- 不能设置请求头并没有对响应头的访问权限。 因此,我无法访问响应正文中出现错误的情况。
- 它的HTTPService得到其他200状态码什么,它考虑的错误。 (事件201,哎哟!)。 该的FaultEvent不提供有关状态码任何回应的身体信息。 Flex客户端将不知道哪里出了问题。
马特Raible也给了REST的漂亮的演示使用Rails,Grails的,GWT和Flex有一些很好的参考,从它的联系。
无论是可行与否实际上取决于多少你愿意通过代理来解决,等等。
我一直工作在一个开源替代品完全支持REST HTTPService组件。 如果有兴趣,你可以找到测试版(源代码和/或编译的Flex的共享运行时库),并说明在这里:
http://code.google.com/p/resthttpservice/
简短的回答是肯定的,你可以做的RESTful使用Flex。 你只需要解决的Flash播放器的限制(更好地与最新版本),并包含浏览器的HTTP堆栈限制。
通过轨道式的?_method =办法解决PUT的基本HTTP请求头和缺乏和DELETE后,我们一直在做的RESTful客户端开发的Flex一年多的时间。 也许俗气,但它能够完成任务。
我注意到,在一个旧的博客文章部分标题疼痛在http://verveguy.blogspot.com/2008/07/truth-about-flex-httpservice.html
对REST的Flex支持较弱的最好的。 我花了很多时间建立一个原型,所以我知道大多数的问题。 正如前面提到的,开箱即用,只有对GET和POST支持。 乍一看,似乎你可以使用代理服务器的配置在LiveCycle Data Services的或杀出,以获得支持PUT和DELETE。 然而,它是假的。 从您的Flex应用程序来请求将仍然是一个POST。 代理其转换为PUT或DELETE在服务器端欺骗你的服务器端代码。 还有其他一些问题。 它听到相信这是的Adobe可以拿出最好的。 我的评估后,我们决定在另一个方向走。
是的,我能使用POST和访问头与此组件:
http://code.google.com/p/as3httpclient/wiki/Links
例
现在我工作的严重依赖的Flex和JavaScript和Java Servlets之间REST调用的应用程序。 我们得到各地的响应错误代码问题,通过建立<状态ID =“XXX” NAME =“YYYYYY”>是被错误后返回,用错误ID,大约映射到HTTP错误代码块的约定。
我们通过使用Java Servlet中作为HTTP代理绕过跨站点脚本的限制。 呼叫到代理(运行,供应的内容的其余部分,包括Flex内容,将请求发送到其他服务器相同的服务器上,然后将响应发送回原始调用者。
RestfulX已经解决了大多数/所有的REST问题的Flex。 它为Rails / GAE / Merb的/ CouchDB的/ AIR / WebKit的支持,我敢肯定,这将是一个扣将其连接到您的Java实现。
迪马的集成AS3HTTPClient图书馆成也。
看看这个!
实际上是已经在使用Flex与REST样式的框架。 不能直接用作mbrevort已经提到的PUT和DELETE方法。 相反,我们正在做的通过POST PUT和DELETE对于我们使用上像一个URL参数资源的GET?行动=删除。
这是不是100%休息的风格,所以我不知道,这是否与JSR 311的实现。 您需要在服务器端的一些flexbility要解决的PUT和DELETE限制。
至于错误处理,我们已经实现了一个错误的服务。 在服务器端错误的情况下,Flex应用程序可以查询这个错误的服务,以获得实际的错误信息。 这也绝不仅仅是映射HTTP返回代码,以静态信息更加灵活。
然而得益于Flex的与基于XML REST服务工作ECMA脚本是很容易的。
REST是比任何一种意识形态。 你去REST介绍,他们有coolaide掌柜。
对于Flex应用,轧制的组合,栈BlazeDS和AMF数据编组是更方便,更高性能的。
我已经在过去的这个管理方式是利用与远程Web服务调用交易,并返回RTU JSON给客户一个PHP代理..
可能是新的Flex 4回答http://labs.adobe.com/technologies/flex4sdk/
这本书灵活的Rails可能是有益的-这是一个关于如何使用Flex为REST客户端的优秀资源。 虽然它侧重于使用Flex与Rails框架,我相信其中的概念适用于任何基于REST的架构。 我用这本书起床上使用Flex与REST很快的速度。
我对富兰克林柯维一个大的Flex项目工作。 我们使用REST服务。 为了支持这一点。 我们创建了一个XMLHttpRequest包装。 通过使用外部接口与一些事件处理程序。 我们opensourced库。 你可以检查出来https://github.com/FranklinCovey/AS3-XMLHttpRequest