2016-08-26 1 views
0

ブラウザにEmberJSテストサーバーを構築しようとしています。 JSONオブジェクトを取得しようとしている "myApiMethod"へのAPI呼び出しがあります。特定のメソッドからの応答をテストしようとしている間に、未処理のjsonオブジェクトを返すか、Mirage.Responseオブジェクトにラップすることができることがわかりました。モックサーバーのレスポンスが現実世界を反映したかったので、2つのうちどれが良いアイデアか分からなかった。Mirage.Responseオブジェクトを返すことと、Mirageを通じて生のJSONオブジェクトを返すことの違いは何ですか?

バージョン1:私が知りたかった何

は、私は私のミラージュのconfig.jsの中に持っている次の2つのコードチャンク間の機能の違いだった

this.get('/myApiMethod', function(param1, param2){ 
     var jsonObject = myFunctionThatReturnsJson(param1, param2); 
     return jsonObject; 
    }); 

バージョン2:

this.get('/myApiMethod',function(param1, param2){ 
     var jsonObject = myFunctionThatReturnsJson(param1, param2); 
     return Mirage.Response(200, {}, jsonObject); 
    }); 

答えて

1

ミラージュは、XHR応答を偽装するためにフードの下でPretender.jsを使用しています。 Pretender自体はレスポンスの種類については理解されていないので、JSONを使用して応答するときは、手動でストリング化する必要があります。ここではドキュメントからの例だ:ミラージュの元の意思決定の

this.get('/photos/:id', function(request) { 
    return [200, {"Content-Type": "application/json"}, JSON.stringify(PHOTOS[request.params.id])] 
}); 

一つは、ほとんどの時間は、人々はJSONで応答したい、ということを前提としました。だから、ミラージュルートハンドラを使用すると、プレーンなJavaScriptのオブジェクトを返してみましょう:

this.get('/photos/:id',() => { 
    return [{ id: 1, url: 'lorempixel.com/100/100' }]; 
}); 

とミラージュは、レスポンスを文字列化し、適切なContentTypeヘッダーを設定するの面倒を見ます。

Mirage.Responseオブジェクトは、レスポンスをカスタマイズしたい人、異なるコンテンツタイプで応答する、ヘッダーを変更する、または指定された動詞のデフォルトとは異なるHTTP応答コードを使用する人のために追加されました。

要するに、デフォルトの動作以外のものが必要な場合は、Mirage.Responseを使用してください。

+0

よろしくお願い致します。 –

関連する問題