Sails.js 如何使计算机出口响应返回JSON?

Sails.js 如何使计算机出口响应返回JSON?,sails.js,Sails.js,Sails返回机器出口请求()正文中HTTP响应的名称: 这将在响应的标题中提供错误响应: X-Exit →emailAlreadyInUse X-Exit-Description →The provided email address is already in use. return this.res.json('Hello World!'); 如何在正常的JSON响应中返回这些内容,使其与其他类似的响应保持一致: 在退出中,您可以包括一个响应类型,它允许您在sails中设置自定义响应

Sails返回机器出口请求()正文中HTTP响应的名称:

这将在响应的标题中提供错误响应:

X-Exit →emailAlreadyInUse
X-Exit-Description →The provided email address is already in use.
return this.res.json('Hello World!');
如何在正常的JSON响应中返回这些内容,使其与其他类似的响应保持一致:


在退出中,您可以包括一个响应类型,它允许您在sails中设置自定义响应

exits: {
    emailAlreadyInUse: {
      statusCode: 409,
      responseType: 'jsonResponse',
      description: 'The provided email address is already in use.'
    }
}
接下来,在api/responses中创建自定义响应,并按自己喜欢的方式进行设置

module.exports = function jsonResponse() {
    let req = this.req;
    let res = this.res;
    sails.log.verbose('Ran custom response: res.jsonResponse()');
    /* DO WHATEVER YOU WANT TO DO */
    return res;
}

如果未找到解决方案,请直接在响应中发送文本:

X-Exit →emailAlreadyInUse
X-Exit-Description →The provided email address is already in use.
return this.res.json('Hello World!');

您可以在操作和catch块中使用try/catch块检查
error.code
,并返回所需的JSON响应。例如你有:


fn:异步函数({name,email,password},exits){
试一试{
const user=wait user.create({
名称
电子邮件
暗语
})
.fetch()
返回exits.success({success:true,user})
}捕获(错误){
如果(error.code=='E_UNIQUE'){
return exits.emailAlreadyInUse({success:false,消息:“提供的电子邮件已被switter用户使用”。})
}else if(error.name=='UsageError'){
return exits.badRequest({success:false,消息:'缺少或无效参数')
}
}
}
出口上的描述主要是针对响应头的。因此,您必须设置要发回的值,方法与设置成功出口的值相同


不要以为
否则如果
块被触发,水线模型应该有一些验证,比如
必需的:true
isEmail:true
等等,并且您的操作输入不应该有
必需的:true
,因为这将在您的操作代码运行之前进行验证,使Sails发送默认响应对于无效或缺少的参数。

好的,我如何将描述从出口传递到自定义响应?您可以将其从req.headers移动到res.exit.message,例如,您的回答到底是什么意思?我有同样的问题,但我没有真正得到您的答案:)