我是新来表达,目前如果我想发送一个回应,我会这样做
//...
res.json({
status: 200,
message: "success",
data: "something"
})
//...
对于我所有的控制器函数,我会这样做。我想这是一种压倒性的,所以我在想是否有可能制作一个广义版本的响应。
所以经过一些搜索,我发现有两种方法可以实现这一点:
我找到了这个答案。这很清楚,但我认为这是浪费时间,我的控制器不够可读,我必须在每个控制器函数中做以下事情
req.responseObject = response;
return next()
这是非常有希望的,但不幸的是,经过这么多次尝试和遵循express docs,我无法让它工作。这是我迄今为止尝试的
我在这里创建了这个util函数:
//myRes.js
module.exports = function (code, message, payload) {
return this.status(code).json({
status: 'success', // this will be variable according to whatever code I get
code: code,
message: message || '',
payload: payload || '',
});
};
然后我在app.js中添加了这一行
// app.js
const express = require('express');
const app = express();
const myRes= require('./utils/myRes');
app.response.send = myRes;
//...
这是我如何在我的控制器上使用它
res.send(200, "hello world", [{"key": "value"}])
当我尝试运行这个时,我得到了这个错误堆栈
RangeError: Maximum call stack size exceeded
at JSON.stringify (<anonymous>)
at stringify ([project_dir]\node_modules\express\lib\response.js:1123:12)
at ServerResponse.json ([project_dir]\node_modules\express\lib\response.js:260:14)
at ServerResponse.module.exports [as send] ([project_dir]\src\utils\response.js:2:28)
at ServerResponse.json ([project_dir]\node_modules\express\lib\response.js:267:15)
at ServerResponse.module.exports [as send] ([project_dir]\src\utils\response.js:2:28)
at ServerResponse.json ([project_dir]\node_modules\express\lib\response.js:267:15)
at ServerResponse.module.exports [as send] ([project_dir]\src\utils\response.js:2:28)
at ServerResponse.json ([project_dir]\node_modules\express\lib\response.js:267:15)
at ServerResponse.module.exports [as send] ([project_dir]\src\utils\response.js:2:28)
at ServerResponse.json ([project_dir]\node_modules\express\lib\response.js:267:15)
at ServerResponse.module.exports [as send] ([project_dir]\src\utils\response.js:2:28)
at ServerResponse.json ([project_dir]\node_modules\express\lib\response.js:267:15)
at ServerResponse.module.exports [as send] ([project_dir]\src\utils\response.js:2:28)
at ServerResponse.json ([project_dir]\node_modules\express\lib\response.js:267:15)
at ServerResponse.module.exports [as send] ([project_dir]\src\utils\response.js:2:28)
为什么是JSON。stringify抱怨我没有在我的整个应用程序中使用这个函数
此外,我不只是上限这2个解决方案,你可以建议其他方式,如果你认为这是更好的
澄清@Ariel评论中所说的内容
快速响应调用内部发送从 express at lines [120, 123, 136] 引用此函数,这导致了一个无限循环,这就是为什么它说
超出最大调用堆栈大小
所以我需要做的就是把我的函数名从send改成“sends ”,这样就可以了
试图覆盖内置的发送功能是个坏主意
问题内容: 对于一个应用程序,我想按如下所述创建JSON格式, 我正在使用以下代码创建相同的代码, 我的格式如下, }} 有人可以帮我创建格式吗? 谢谢。 问题答案: 所需数据,您可以通过这种方式获得。只需将其dict转换为JSon或您想要的任何其他格式即可。删除该数组,您不需要它,正如您以要求的格式提到的那样。
问题内容: 是否存在用于构造来自API的JSON响应的标准或最佳实践?显然,每个应用程序的数据都是不同的,因此您不必担心很多,而是“响应样板”。我的意思的例子: 成功的请求: 请求失败: 问题答案: 是的,已经出现了一些标准(尽管对标准的定义有一些自由): JSON API -JSON API还涵盖创建和更新资源,而不仅仅是响应。 JSend-简单,可能已经在做。 OData JSON协议 -非常
问题内容: 如何将Webmethod的值以JSON格式返回给客户端? 我要返回两个静态int值。 我是否需要使用这两个属性创建新对象并返回它? GetStatus()方法经常被调用,我不喜欢每次仅用于json格式创建一个特殊对象的想法。 在客户端,我在捕获返回值: 问题答案: 我只想带一个物体。它符合您的需求。如果您有两个返回值,则必须以结构化的方式将它们放在一起。
本文向大家介绍举例说明json的标准格式相关面试题,主要包含被问及举例说明json的标准格式时的应答技巧和注意事项,需要的朋友参考一下 JSON数值 JSON字符串 JSON数组 JSON对象 JSON对象数组 JSON数组对象
问题内容: 目的是调用一个执行该操作的方法,然后返回一个JSON对象。 我是JSON的新手。 我有一个default.aspx,并在其中下面的代码。现在,我希望Default.aspx.cs中的普通方法在此处的click事件上运行。 }); Default.aspx.cs类似于以下内容: 我在哪里错了?我应该以某种方式使用它还是仅适用于Web服务? 问题答案: 我建议一个。没有页面生命周期(因此速
问题内容: 我正在使用python 2.6中的标准json模块来序列化浮点列表。但是,我得到这样的结果: 我希望浮点数仅使用两位十进制数字进行格式化。输出应如下所示: 我尝试定义自己的JSON Encoder类: 这适用于唯一的float对象: 但是对于嵌套对象失败: 我不想有外部依赖性,所以我更喜欢使用标准的json模块。 我该如何实现? 问题答案: 注: 这并 没有 任何最新版本的Python