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

2022-09-01 09:50:18

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

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

你们中的任何一个人在类似的项目中都有一些经验。可行吗?


答案 1

这里的问题是,围绕这个问题的许多网络讨论都是一年或更长时间的。我现在正在进行同样的研究,这就是我今天学到的。

Jorge Rasillo 和 Mike Burr 在 2008 年 8 月发表的这篇 IBM Developer Works 文章展示了如何做一个 Flex 前端 /RESTful 后端应用(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 服务器拦截“使用 DELETE 的 POST”并将其解释为 DELETE。

因此,我进一步挖掘并找到了这篇文章,并与Don Box(最初的SOAP人之一)进行了讨论。显然,这是一个相当标准的行为,因为某些浏览器等不支持PUT和DELETE,并且是已经存在了一段时间的解决方法。这里有一个片段,但还有更多的讨论。

“如果我正在构建一个GData客户端,老实说,我想知道为什么我会费心使用DELETE和PUT方法,因为X-HTTP-Method-Override将在更多情况下/部署中工作。

我从中得到的结论是,如果您的Web端支持此X-Method-Override标头,那么您可以使用此方法。Don Box的评论使我认为它得到了很好的支持,但我还没有证实这一点。

另一个问题是关于能够读取HTTP响应标头。同样,从Nathan de Vries在2007年的一篇博客文章中,我们看到对此进行了讨论。他在那篇博客文章和讨论中发表了自己的评论:

“Web方面唯一的变化是,新版本的Flash Player(当然是Flex 3 beta提供的那些)现在支持HTTPStatusEvent实例上的recertHeaders属性。

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


答案 2

正如许多人指出的那样,这有点简单化,并没有做你想做的所有事情。但是,只是糖在类之上,如,和。使用这些参数,您可以组合大多数 HTTP 请求。HTTPServiceHTTPServiceflash.net.*URLLoaderURLRequestURLRequestHeader

当涉及到对GET和POST以外的其他方法的支持时,问题主要在于某些浏览器(例如Safari)不支持这些方法,而Flash Player依靠浏览器进行所有网络。