32

Java で実装された Restful アーキテクチャを使用してプロジェクトを開始しています (新しい JAX-RS 標準を使用)

Flex アプリケーションで GUI を開発する予定です。HTTPService コンポーネント (応答エラー コード、ヘッダー アクセスなど) を使用して、この実装に関するいくつかの問題を既に発見しました。

皆さんは、同様のプロジェクトで何らかの経験を持っています。それは実現可能ですか?

4

15 に答える 15

23

ここでの問題は、この問題に関する Web での議論の多くが 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 でも同じことができると思います)。
  • これは、上で説明した Proxy メソッドではないことに注意してください。

// 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 担当者の 1 人) とのディスカッションを見つけました。一部のブラウザーなどは PUT と DELETE をサポートしていないため、これは明らかに標準的な動作であり、しばらく回避されている回避策です。ここにスニペットがありますが、さらに多くの議論があります。

「私が GData クライアントを構築していた場合、X-HTTP-Method-Override がより多くのケース/展開で機能することを考えると、なぜわざわざ DELETE および PUT メソッドを使用するのか疑問に思っています。」

ここからの私の見解は、Web 側がこの X-Method-Override ヘッダーをサポートしている場合、このアプローチを使用できるということです。Don Box のコメントは、かなりよくサポートされていると思いますが、まだ確認していません。

HTTP 応答ヘッダーを読み取ることができるという点で、別の問題が発生します。繰り返しますが、2007 年の Nathan de Vries によるブログ投稿から、これが議論されていることがわかります。彼は自身のコメントでそのブログ投稿と議論をフォローアップしました。

「Web フロントでの唯一の変更点は、Flash Player の新しいバージョン (確かに Flex 3 ベータ版で提供されているもの) が HTTPStatusEvent のインスタンスで responseHeaders プロパティをサポートするようになったことです。」

それが今は問題ではないことを意味することを願っています。

于 2008-10-02T16:10:31.297 に答える
6

多くの人が指摘しているように、これHTTPServiceは少し単純化されており、やりたいことをすべて実行するわけではありません。ただし、HTTPService、、flash.net.*および. これらを使用して、ほとんどの HTTP リクエストを組み立てることができます。URLLoaderURLRequestURLRequestHeader

GET と POST 以外のメソッドのサポートに関して言えば、ほとんどの問題は、一部のブラウザー (Safari など) がこれらをサポートしていないことにあり、Flash Player はネットワークのすべてをブラウザーに依存しています。

于 2008-10-01T13:16:26.747 に答える
5

純粋な RESTful クライアントとして機能する Flex の機能には明らかな欠点があります。

以下のコメントはこのブログからのものです。

問題は、HTTPService クラスにいくつかの大きな制限があることです。

  1. デフォルトでは、GET および POST メソッドのみがサポートされています (FDS を使用して useProxy 属性を true に設定しない限り)。
  2. リクエスト ヘッダーを設定できず、レスポンス ヘッダーにアクセスできません。したがって、エラーが発生した場合、応答本文にアクセスできません。
  3. HTTPService が 200 以外のステータス コードを取得すると、エラーと見なされます。(イベント201、うわっ!!)。FaultEvent は、ステータス コードに関する情報を応答本文に提供しません。Flex クライアントは、何が問題なのかわかりません。

Matt Raible、REST と Rails、Grails、GWT、Flex に関する優れたプレゼンテーションを行いました。RESTからリンクされた優れた参考文献がいくつかあります。

それが実現可能かどうかは、プロキシなどによってどれだけ回避できるかによって異なります。

于 2008-09-30T15:16:05.377 に答える
3

私は、REST を完全にサポートする HTTPService コンポーネントのオープン ソースの代替品に取り組んできました。興味がある場合は、ベータ版 (ソース コードおよび/またはコンパイルされた Flex 共有ランタイム ライブラリ) と手順を以下で見つけることができます。

http://code.google.com/p/resthttpservice/

于 2009-01-09T00:52:13.733 に答える
2

簡単に言えば、はい、Flex で RESTful を実行できます。Flash プレーヤーの制限 (最新バージョンの方が優れています) と、含まれているブラウザーの HTTP スタックの制限を回避する必要があります。

Rails 風の ?_method= アプローチを使用して、基本的な HTTP 要求ヘッダーと PUT および DELETE の欠如を解決した後、Flex で RESTful クライアント開発を 1 年以上行っています。おそらく粘着性がありますが、それは仕事を成し遂げます.

http://verveguy.blogspot.com/2008/07/truth-about-flex-httpservice.htmlの古いブログ投稿で、ヘッダーの痛みの一部を指摘しました。

于 2010-01-14T02:29:29.393 に答える
2

REST の Flex サポートはせいぜい弱いです。プロトタイプの構築に多くの時間を費やしたので、ほとんどの問題を知っています。前述のように、すぐに使用できるのは GET と POST のみです。一見すると、LiveCycle Data Services または Blaze でプロキシ設定を使用して、PUT および DELETE のサポートを取得できるように見えます。しかし、それは偽物です。Flex アプリからのリクエストは POST のままです。プロキシは、サーバー側でそれを PUT または DELETE に変換して、サーバー側のコードをだまします。他にも問題があります。これが Adob​​e が思いついた最高のものであると信じていると聞いています。私の評価の後、私たちは別の方向に進むことにしました。

于 2010-03-10T21:31:50.573 に答える
1

RestfulXは、Flex に関する REST の問題のほとんどまたはすべてを解決しました。Rails/GAE/Merb/CouchDB/AIR/WebKit をサポートしており、Java 実装に簡単に接続できると確信しています。

Dima は AS3HTTPClient ライブラリも統合しました。

見てみな!

于 2009-10-05T07:43:48.050 に答える
1

私は現在、Flex と JavaScript および Java サーブレット間の REST 呼び出しに大きく依存するアプリケーションに取り組んでいます。エラー時に返される <status id="XXX" name="YYYYYY"> ブロックの規則を確立し、エラー ID を HTTP エラー コードに大まかにマッピングすることで、応答エラー コードの問題を回避します。

Java サーブレットを HTTP プロキシとして使用することで、クロスサイト スクリプティングの制限を回避します。プロキシへの呼び出し (Flex コンテンツを含む残りのコンテンツを提供するのと同じサーバー上で実行される) は、要求を他のサーバーに送信し、応答を元の呼び出し元に送り返します。

于 2008-09-30T19:29:05.393 に答える
1

はい、このコンポーネントで POST を使用してヘッダーにアクセスできました。

http://code.google.com/p/as3httpclient/wiki/Links

于 2008-09-30T15:35:54.393 に答える
0

「 FlexibleRails」という本が役立つかもしれません。これは、FlexをRESTfulクライアントとして使用する方法に関する優れたリソースです。RailsフレームワークでのFlexの使用に焦点を当てていますが、この概念はすべてのRESTfulフレームワークに適用できると思います。私はこの本を使用して、RESTでFlexを使用する方法をすばやく理解しました。

于 2010-02-10T17:10:35.637 に答える
0

私が過去にこれを管理した方法は、リモート Web サービス呼び出しを処理し、RTU JSON をクライアントに返す PHP プロキシを利用することでした..

于 2008-12-24T22:06:10.017 に答える
0

REST は何よりもイデオロギーです。REST プレゼンテーションに行くと、クーレイド ディスペンサーが用意されています。

Flex アプリの場合、BlazeDS および AMF データ マーシャリングと組み合わせてスタックをローリングすると、より便利でパフォーマンスが向上します。

于 2008-12-24T21:13:03.167 に答える
0

新しいフレックス 4 が答えかもしれませんhttp://labs.adobe.com/technologies/flex4sdk/

于 2009-08-12T20:57:03.557 に答える
0

Franklin Covey の大きなフレックス プロジェクトに取り組んでいます。REST サービスを使用します。これをサポートするために。XMLHttpRequest ラッパーを作成しました。一部のイベント ハンドラーで外部インターフェイスを使用する。ライブラリをオープンソース化しました。https://github.com/FranklinCovey/AS3-XMLHttpRequestで確認できます。

于 2012-10-25T15:58:40.877 に答える
0

実際、すでにRest-Style FrameworkでFlexを使用していました。mbrevort が既に述べたように、PUT および DELETE メソッドを直接使用することはできません。代わりに、POST を介して PUT を実行し、DELETE の場合は、?action=delete のような URL パラメーターを使用してリソースで GET を使用しています。

これは 100% Rest スタイルではないため、これが JSR 311 実装で機能するかどうかはわかりません。PUT および DELETE の制限を回避するには、サーバー側にある程度の柔軟性が必要です。

エラー処理に関しては、エラーサービスを実装しました。サーバー側のエラーの場合、Flex アプリケーションはこのエラー サービスにクエリを実行して、実際のエラー メッセージを取得できます。これは、HTTP リターン コードを静的メッセージにマッピングするよりもはるかに柔軟です。

しかし、XML ベースの REST サービスと連携する Flex の ECMA スクリプティングのおかげで、非常に簡単です。

于 2008-09-30T15:31:18.147 に答える