私は Ember Data の初心者で、これまでに行ったのは FIXTURE データだけですが、今日は本格的に卒業しようとしており、モデルと API を接続する方法について十分に知らないことに気付きました。署名を呼び出します。
具体的には、 endpoint を呼び出せるようにしたいと考えていますGET /activities/[:user_id]/[date]
。これにより、「アクティビティ」オブジェクトの配列がロードされますが、特定の日付のオブジェクトのみがロードされます。APIのディレクトリを次のようにオフセットできることを知っています:
DS.RESTAdapter.reopen({
namespace: 'api'
});
私の場合、api
プレフィックスは適切です。次のようなルートを設定することで、日付コンポーネントを解決できるはずだと思います。
this.resource('activities', { path: '/activities' }, function() {
this.route('by_date', {path: '/:target_date'});
});
user_id
上記は、コンポーネントを URL 署名に組み込む方法について完全に途方に暮れているため、経験に基づいた推測にすぎません。誰でも助けることができますか?基本的な Ember Data のユースケースの優れたチュートリアルや例はありますか?
また、次にこれに出くわすことがわかっているため、URL 文字列 (別名、GET /foobar?something=value) にパラメーターを追加する方法と、URL 自体にパラメーターを追加する方法 (上記のように) を比較します。
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 更新 -=-=-=- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@intuitivepixel からの提案を実装しましたが、まだいくつかの問題があります ...
userId
まず、との値をハードコーディングしようとしましたdateBy
:
ルーター:
this.resource('activities', { path: '/activities' }, function() {
this.route('by_date', {path: '/:user_id/:by_date'});
});
ルート:
App.ActivitiesByDateRoute = Ember.Route.extend({
serialize: function(activity) {
return {
userId: 1,
dateBy: "2013-07-01"
};
}
});
悲しいことに、それはうまくいきませんでした。理由は理解できたと思いますが、これを簡単に修正する方法はありませんが、URL: にパラメータを手動で入力したときのほうが気がかりでしたhttp://restful.service.com/api/activities/1/2013-07-01
。結果は私にとって非常に驚くべきものです。
- 最初のデバッグ メッセージは成功を示唆しています。
- ただし、実際にはネットワーク リクエストが行われないため、これは正しくありません。
- ブラウザをリロードすると、アクティビティが表示されますが、驚いたことに、指定されたユーザーも検索されます。うーん。ユーザー 1 は正常に引き戻されました。
GET /activities
ただし、アクティビティは、このエンドポイントが機能するためにユーザーと日付修飾子が必要なため、失敗する単なる呼び出しです。これらがリクエストに含まれていなかったのはなぜですか?