gpt4 book ai didi

javascript - 是否所有错误消息都应该以可以显示给用户的形式来自后端?

转载 作者:行者123 更新时间:2023-12-04 01:03:30 25 4
gpt4 key购买 nike

情况是这样的,我使用 axios 库和成功和不成功请求的拦截器,以便在发生错误时自动从服务器获取并显示带有错误文本的警报。
因此,我的后端开发人员向我发送了不适合输出到警报的错误消息,认为该消息是我必须自己生成错误,但只需要来自服务器的内容,以便我知道错误。他是对的,还是从后端发送错误消息应该严格像 response.message并匹配 UI 上显示给用户的错误格式?
我说的通用错误拦截器看起来是这样的,但是它每次发送给我的错误是在不同的路径上,而它们的格式不适合显示给用户,并且经常会出现一个带有错误的数组来请求.他在做正确的事吗?
因为在那种情况下,我不能使用下面的代码来处理错误

const API = axios.create({
baseURL: '/api/',
responseType: 'json',
headers: { 'cache': 'no-store' },
})

const onFulfilled = (response) => response.data


const onRejected = (error) => {
if (error.response?.status === 500) {
notify(error.response.statusText || ' Internal server error', 'error')
} else if (error.response?.data.message) {
notify(error.response.data.message, 'error')
} else {
notify('Oops something went wrong', 'error')
}
..... and so on
return Promise.reject(error)
}

API.interceptors.response.use(onFulfilled, onRejected)

最佳答案

这是一个典型的困境,尤其是当项目还很年轻并且一切都发生得很快时。有一个立竿见影的答案(而且是正确的!),但这意味着什么并不是很明显。
规则
一般情况下,后端软件通知前端软件,前端软件通知人类用户 .
这意味着您的后端应该发送用于程序解析的错误信息,而您的前端应该将其解释并转换为人们的语言和用户界面。
然而,这对双方都是有效的。您的服务器应该以易于使用的形式发送足够的信息。让我给你举个例子:

{ 
errorCode: ERROR_INVALID_SOMETHING,
errorData: { something: 8, maxSomething: 5 }
}
前端代码可以很容易地解释这一点,并为人类用户产生足够的信息,例如“对不起!有些东西必须低于 5,而 8 太高了”。你最终会得到这样的东西:
switch (response.errorCode) {
case ERROR_INVALID_SOMETHING:
...
}
反规则
如果服务器发送没有标准或稳定性保证的不可解析的字符串,这很难实现。一个令人震惊的例子:
{
error: "InvalidSomethingException at server.x:15 maxSomething=5 but something is '8'"
}
前端代码不能用这个。如果您认为字符串可能因任何原因而更改,例如错误类型是否更改,情况会变得更糟。
异常(exception)
在一系列情况下,向用户显示原始服务器端字符串不仅是可以接受的,而且是必不可少的:当您想将特定情况下的自定义消息发送到无法轻松升级的软件时。
例如,您突然发现一个使用户面临风险的错误,需要立即进行维护。您想尽快向您的用户发送消息,并且您不能等待应用商店在接下来的 5 个工作日内批准更新。
如果您的软件已准备好针对这种可能性显示自定义消息,那么现在是这样做的好时机—— 但是数据也应该遵循良好的结构 .例如:
errorCode: ERROR_CUSTOM
errorData: {
en: "We need to inform you about something right now",
es: "Necesitamos informarte de algo ya mismo"
}
请注意,这遵循类似的结构,前端代码仍然可以使用标准。
结论
您应该与您的后端团队坐下来就如何构建错误及其元数据达成共识。
这可能需要一些工作才能开始,因为您需要定义和可能的重构,但可以扩展到非常复杂的场景,您可能永远不需要再次修改代码。

关于javascript - 是否所有错误消息都应该以可以显示给用户的形式来自后端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67290510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com