通过 Mirage 返回 Mirage.Response 对象与返回原始 JSON 对象有什么区别?
What is the difference between returning a Mirage.Response object vs returning a raw JSON object through Mirage?
我正在尝试在浏览器中构建一个 EmberJS 测试服务器。我有一个 API 调用 "myApiMethod",我试图从中获取一个 JSON 对象。在尝试测试特定方法的响应时,我发现我可以 return 原始 json 对象,或将其包装在 Mirage.Response 对象中。因为我希望模拟服务器的响应能够反映真实世界,所以我不确定这两者中哪一个更好。
我想知道的是我的 Mirage config.js 中的以下两段代码之间的功能差异:
版本 1:
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);
});
Mirage 在幕后使用 Pretender.js 伪造 XHR 响应。 Pretender 本身对响应类型没有意见,因此在使用 JSON 响应时,您需要手动将其字符串化。这是文档中的示例:
this.get('/photos/:id', function(request) {
return [200, {"Content-Type": "application/json"}, JSON.stringify(PHOTOS[request.params.id])]
});
Mirage 最初的决定之一是假设,大多数时候,人们希望用 JSON 来回应。因此,Mirage 中的路由处理程序让您 return plain JavaScript objects:
this.get('/photos/:id', () => {
return [{ id: 1, url: 'lorempixel.com/100/100' }];
});
Mirage 负责将响应字符串化并设置适当的 ContentType header。
Mirage.Response
object 是为想要自定义响应的人添加的,可以使用不同的内容类型进行响应,更改 header 或使用不同的 HTTP比给定动词的默认响应代码。
简而言之,如果您需要默认行为以外的东西,请使用 Mirage.Response
。
我正在尝试在浏览器中构建一个 EmberJS 测试服务器。我有一个 API 调用 "myApiMethod",我试图从中获取一个 JSON 对象。在尝试测试特定方法的响应时,我发现我可以 return 原始 json 对象,或将其包装在 Mirage.Response 对象中。因为我希望模拟服务器的响应能够反映真实世界,所以我不确定这两者中哪一个更好。
我想知道的是我的 Mirage config.js 中的以下两段代码之间的功能差异:
版本 1:
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);
});
Mirage 在幕后使用 Pretender.js 伪造 XHR 响应。 Pretender 本身对响应类型没有意见,因此在使用 JSON 响应时,您需要手动将其字符串化。这是文档中的示例:
this.get('/photos/:id', function(request) {
return [200, {"Content-Type": "application/json"}, JSON.stringify(PHOTOS[request.params.id])]
});
Mirage 最初的决定之一是假设,大多数时候,人们希望用 JSON 来回应。因此,Mirage 中的路由处理程序让您 return plain JavaScript objects:
this.get('/photos/:id', () => {
return [{ id: 1, url: 'lorempixel.com/100/100' }];
});
Mirage 负责将响应字符串化并设置适当的 ContentType header。
Mirage.Response
object 是为想要自定义响应的人添加的,可以使用不同的内容类型进行响应,更改 header 或使用不同的 HTTP比给定动词的默认响应代码。
简而言之,如果您需要默认行为以外的东西,请使用 Mirage.Response
。