如何为重复添加同一促销优惠码设置自定义错误信息(非路由装饰)
无需修改/checkout/promotion/add路由的自定义错误方案
针对lineItemNotStackable异常的自定义错误提示,完全可以不用改动目标路由,以下两种方案直接可行:
后端全局异常拦截
在系统的全局错误处理层添加异常匹配规则:
- 配置全局中间件/拦截器,监听所有抛出的异常,当捕获到
lineItemNotStackable类型的异常时,直接返回你想要的自定义错误文本(比如“同一促销活动的优惠码不能重复添加”),覆盖默认的“Ops something went wrong”提示。 - 举个简单的Node.js/Express示例:
app.use((err, req, res, next) => { if (err.name === 'lineItemNotStackable') { return res.status(400).json({ message: '同一促销活动的优惠码无法重复添加' }); } res.status(500).json({ message: 'Ops something went wrong' }); });
- 其他框架(如Spring、Django)也有对应的全局异常处理机制,只需在对应模块中添加该异常的映射逻辑即可。
前端错误响应拦截
如果前端能拿到后端返回的异常标识(比如error code或错误名称),可以在请求响应环节做处理:
- 在调用添加优惠码接口的回调或拦截器中,判断返回的错误类型是否为
lineItemNotStackable,如果是则展示自定义提示,否则显示默认错误信息。 - 举个前端示例(基于axios):
axios.post('/checkout/promotion/add', promoCode) .catch(err => { if (err.response?.data?.error === 'lineItemNotStackable') { alert('同一促销活动的优惠码不能重复添加'); } else { alert('Ops something went wrong'); } });
两种方案都不需要修改/checkout/promotion/add路由的原有代码,只需在全局错误处理或前端响应处理中添加匹配逻辑即可。
内容的提问来源于stack exchange,提问作者Martin Locke
相关产品推荐
相关产品推荐

