2013-03-21 9 views
14

私が構築しているプロジェクトでember-dataを使用したいのですが、私が扱っているAPIはREST規則に従っていません。非RESTful環境のEmber-data

たとえば、すべてのHTTP要求はPOSTであり、エンドポイントの命名規則は実行するアクションに固有のものです。例えば/api/thing/retrieveでは、いくつかのパラメータを持つJSONオブジェクトを投稿する必要があり、「もの」を返します。

私はRestfulアダプターを使用してクラスを開き、さまざまな検索機能を再定義しますか?

OR

私は新しいアダプタを作成する必要がありますか?

OR

私はちょうど私のモデル(または多分コントローラ)にAJAXを燃えさしデータを放棄し、そして使用する必要がありますか?

どのようにこれらのオプションを処理するかわかりません。どんな指導も高く評価されます。

+0

また、非RESTfulな操作を処理する方法を探しています – tigrish

+0

これ以上の方法はありますか? – woohoou

答えて

1

私がこのテーマで見た唯一の情報は、以下にリンクされている談話の人々の記事でした。

http://eviltrout.com/2013/03/23/ember-without-data.html

私は個人的に記事にreopenClass方法で周りのおもちゃにしている、と私は私が定期的に呼んでいた一貫性のあるが、非REST APIを持っていたならば、おそらくその旨をミックスインか何かにドロップします。

+0

これを正しく理解すれば、「顧客のアダプタを作成しないでください」というより、独自のajaxメソッドをモデルに追加することになります。 – tigrish

+0

上記の答えの方法は確かにはるかに堅牢で、私は何か複雑なものを試してみたいものです。しかし、私はember-data/adapterのドキュメントを掘り下げておらず、カスタムアダプタの作成に関わることを知りませんでした。いくつかのモデルでは、私はまだajaxコールを入れているだけでしょう。それよりも複雑で、研究と執筆は時間コストの価値があるでしょう。 – nrion

0

あなたのAPIが一貫性がある(信頼できる)なら、あなたの仕様に実装するためにDS.Adapter(DS.RESTAdapterではなく)を作成/拡張する必要があります。

すべてのフックがあります。すべてのモデルで使用できるようになります。

また、基本アダプターコード - (https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/basic_adapter.js)を読むと、DS.Adapterの方が良い出発点になるかもしれません。

APIが信頼できない場合は、必要に応じて$ .ajax()呼び出しを使用するほうがよいでしょう。しかし、私の意見では、それはうまく拡張されません。

読む価値のリンク基本アダプタを見て:http://emberjs.com/blog/2013/03/22/stabilizing-ember-data.html

一つの最後のノート、さえORMまたは、より単純なものORMが私のために、燃えさしデータを使用して作ることを、簡単な作業ではありませんを構築努力する価値があり、時には痛みを感じます。

+0

カスタム・アダプター(モデル・インスタンスで呼び出されるものが望ましい)内に非RESTアクションの例がありますか?基本的なアダプタを読み込むことは、基本的には既存のRESTアクションの実装を示しています。 – tigrish

+0

@tigrish私が持っている唯一のものはhttp://emberjs.com/blog/2013/03/22/stabilizing-ember-data.htmlです。これは基本的なアダプターについて語り、実装の例を示しています。 – mspisars