当前位置:  开发笔记 > 编程语言 > 正文

使用Flex创建REST客户端是否可行?

如何解决《使用Flex创建REST客户端是否可行?》经验,为你挑选了3个好方法。

我正在使用Java实现的Restful架构开始一个项目(使用新的JAX-RS标准)

我们计划使用Flex应用程序开发GUI.我已经使用HTTPService组件(响应错误代码,标头访问...)发现了这个实现的一些问题.

你们中的任何人都有类似项目的经验.这可行吗?



1> Guerry..:

这里的问题是围绕这个问题的很多网络讨论都是一年或更久.我现在正在进行同样的研究,这就是我今天所学到的.

此IBM开发工作从2008年8月的文章由豪尔赫Rasillo和迈克·伯尔展示了如何做一个Flex前端/ REST风格的后端应用程序(在PHP和Groovy的例子).好文章.无论如何,这是拿走:

他们的PHP/Groovy代码使用并期望 PUT和DELETE.

但是Flex代码必须使用POST,但是将HTTP标头X-Method-Override设置为DELETE(你可以为我设想的PUT做同样的事情).

请注意,这不是上面讨论的代理方法.

// 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 with DELETE"解释为DELETE.

所以,我进一步挖掘并发现了这篇文章和Don Box(原始的SOAP人之一)的讨论.显然这是一个相当标准的行为,因为一些浏览器等不支持PUT和DELETE,并且是一个已经存在了一段时间的解决方法.这是一个片段,但还有更多的讨论.

"如果我正在构建一个GData客户端,我真的很想知道为什么我一直在使用DELETE和PUT方法,因为X-HTTP-Method-Override将在更多的情况/部署中起作用."

我对此的看法是,如果您的Web端支持此X-Method-Override标头,那么您可以使用此方法.Don Box评论让我觉得它得到了相当好的支持,但我还没有确认.

另一个问题是能够读取HTTP响应头.同样,在Nathan de Vries 2007年的博客文章中,我们看到了这个问题.他根据自己的评论跟进了博客文章和讨论:

"网络方面的唯一变化是Flash Player的新版本(当然是随Flex 3 beta提供的那些版本)现在支持HTTPStatusEvent实例上的responseHeaders属性."

我希望这意味着它现在不是问题.



2> Theo..:

正如许多人所指出的那样HTTPService有点简单,并没有做你想做的所有事情.然而,HTTPService只是在flash.net.*类之上的糖URLLoader,URLRequestURLRequestHeader.使用这些可以组合大多数HTTP请求.

当谈到支持除GET和POST之外的其他方法时,问题主要在于某些浏览器(例如Safari)不支持这些,并且Flash Player依赖于浏览器来实现其所有网络.



3> mbrevoort..:

Flex作为纯RESTful客户端的能力存在明显的缺点.

以下评论来自此博客:

问题是HTTPService类有几个主要限制:

    开箱即用支持GET和POST方法(除非您使用FDS并将useProxy属性设置为true)

    无法设置请求标头,也无法访问响应标头.因此,如果出现错误,我无法访问响应正文.

    HTTPService获取其他任何200的状态代码,它会考虑错误.(事件201,哎!!).FaultEvent不提供有关任何响应主体的状态代码的信息.Flex客户端不知道出了什么问题.

Matt Raible还提供了关于REST与Rails,Grails,GWT和Flex的精彩演示,其中有一些很好的参考资料.

是否可行取决于您愿意通过代理等方式解决的问题.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有