当前位置: 首页 > news >正文

单网页网站扒站工具小广告公司如何起步

单网页网站扒站工具,小广告公司如何起步,页面模板 公众号,一个营业执照可以做两个网站一、问题场景 今天在开发商品管理系统时,遇到了一个有趣的问题:当添加重复的商品编号时,页面同时弹出了两条 "商品编号已存在" 错误提示: 这个问题暴露了前端错误处理机制的混乱,让我们从这个问题出发&…

一、问题场景

今天在开发商品管理系统时,遇到了一个有趣的问题:当添加重复的商品编号时,页面同时弹出了两条 "商品编号已存在" 错误提示:
在这里插入图片描述
这个问题暴露了前端错误处理机制的混乱,让我们从这个问题出发,深入了解响应拦截器的应用。

二、问题分析

原始代码

// 响应拦截器
instance.interceptors.response.use(result => {if (result.data.code === 1) {return result.data;}ElMessage.error(result.data.msg || '服务异常');return Promise.reject(result.data);},err => {if(err.response.status === 401){ElMessage.error('请先登录!')router.push('/login')}else{ElMessage.error('服务异常');}return Promise.reject(err);}
)// 业务代码
const saveProduct = async () => {try {// ... 表单验证等代码 ...const res = await productAddService(submitData)if (res.code === 1) {ElMessage.success('添加成功')// ... 其他成功处理 ...} else {ElMessage.error(res.msg || '添加失败')}} catch (error) {ElMessage.error(error.msg || '商品编号已存在')}
}

错误提示重复的原因

  1. 后端返回数据:{code: 0, msg: “商品编号已存在”, data: null}
  2. 响应拦截器发现 code !== 1,显示错误消息并 reject
  3. 业务代码的 catch 块又显示了一次错误消息

三、解决方案

统一的响应拦截器处理

// src/utils/request.js
instance.interceptors.response.use(result => {// 业务成功if (result.data.code === 1) {return result.data;}// 业务失败,统一处理错误提示ElMessage.error(result.data.msg || '操作失败');return Promise.reject(result.data);},err => {// 处理HTTP错误if(err.response.status === 401){ElMessage.error('请先登录!')router.push('/login')}else{ElMessage.error('服务异常');}return Promise.reject(err);}
)

简化业务代码

const saveProduct = async () => {try {await productForm.value.validate()const submitData = {...productModel.value,price: Number(productModel.value.price)}const service = isEditMode.value ? productEditService : productAddServiceconst res = await service(submitData)// 只处理成功情况ElMessage.success(`${isEditMode.value ? '编辑' : '添加'}成功`)dialogVisible.value = falseproductList()resetProductModel()} catch (error) {// 错误已在拦截器中处理,这里不需要重复处理return}
}

四、响应拦截器

什么是响应拦截器

这里我进行一个类比,想象你在一个公司工作:

  • 你就是业务部门(前端业务代码)
  • 前台小姐姐就是响应拦截器
  • 各种快递就是服务器返回的数据

场景一:正常快递

快递 → 前台验收 → 签字 → 转交给你

对应代码:

// 响应拦截器(前台小姐姐)
axios.interceptors.response.use(response => {if (response.data.code === 1) {  // 检查快递是否完好return response.data          // 转交给业务部门}}
)// 业务代码(你)
const res = await getProductList()  // 直接收到处理好的快递
console.log(res.data)              // 使用快递内容

场景二:问题快递

坏快递 → 前台拒收 → 你完全不用处理

对应代码:

// 响应拦截器(前台小姐姐)
axios.interceptors.response.use(response => {if (response.data.code !== 1) {  // 发现快递有问题ElMessage.error('快递有问题')  // 通知你快递有问题return Promise.reject()       // 直接拒收,不给你添麻烦}}
)// 业务代码(你)
try {const res = await getProductList()// 只需要处理正常情况
} catch {// 问题已经被前台处理了,你不用管
}

响应拦截器就像这个"前台接待",它在服务器响应返回到我们的业务代码之前对所有响应进行统一的处理

为什么需要响应拦截器?

  1. 没有响应拦截器时:
// 每个业务请求都需要重复处理这些情况
const getProductList = async () => {try {const res = await axios.get('/api/products')if (res.data.code === 1) {  // 成功return res.data.data} else if (res.data.code === 401) {  // 未登录ElMessage.error('请先登录')router.push('/login')} else {  // 其他错误ElMessage.error(res.data.msg)}} catch (error) {ElMessage.error('网络错误')}
}const addProduct = async () => {try {const res = await axios.post('/api/product/add')// 又要重复上面的代码...} catch (error) {// 又要重复上面的代码...}
}
  1. 使用响应拦截器后:
// 统一的响应处理
axios.interceptors.response.use(response => {// 统一处理成功和失败if (response.data.code === 1) {return response.data}// 统一处理未登录if (response.data.code === 401) {ElMessage.error('请先登录')router.push('/login')return Promise.reject(response.data)}// 统一处理错误提示ElMessage.error(response.data.msg)return Promise.reject(response.data)},error => {// 统一处理网络错误ElMessage.error('网络错误')return Promise.reject(error)}
)// 业务代码变得简洁
const getProductList = async () => {try {const res = await axios.get('/api/products')return res.data  // 只需处理成功的情况} catch (error) {// 错误已经在拦截器中处理过了}
}

四、请求流程图

请求发起 → 请求拦截器 → 服务器 → 响应拦截器 → 业务代码

五、最佳实践总结

  1. 响应拦截器职责
    • 统一处理响应数据格式
    • 统一处理错误提示
    • 处理特殊状态码(如401未登录)
    • 转换服务端数据结构(如果需要)
  2. 业务代码职责
    • 关注业务逻辑
    • 处理成功场景
    • 可以选择性地处理特定错误
    • 不重复错误提示
  3. 错误处理原则
    • 统一入口处理错误
    • 避免重复提示
    • 提供清晰的错误信息
    • 合理使用 Promise.reject()

六、扩展应用

处理登录失效

if (err.response.status === 401) {ElMessage.error('登录已过期,请重新登录')router.push('/login')
}

处理网络错误

if (!error.response) {ElMessage.error('网络连接失败,请检查网络设置')
}

处理特定业务错误

if (result.data.code === 100001) {// 处理特定业务错误码handleSpecialError(result.data)return Promise.reject(result.data)
}

七、总结

响应拦截器就像一个尽职尽责的前台,帮你处理了所有烦琐的检查工作,让我们可以专注于核心业务。


文章转载自:
http://dinncohokypoky.tqpr.cn
http://dinncoconjunctiva.tqpr.cn
http://dinncounbe.tqpr.cn
http://dinncotriggerfish.tqpr.cn
http://dinncosemaphoric.tqpr.cn
http://dinncoreassert.tqpr.cn
http://dinncoplenary.tqpr.cn
http://dinncorotatee.tqpr.cn
http://dinncoheterosexuality.tqpr.cn
http://dinncopreexilic.tqpr.cn
http://dinncorobotistic.tqpr.cn
http://dinncoanchorman.tqpr.cn
http://dinncounfenced.tqpr.cn
http://dinncosadhana.tqpr.cn
http://dinncohypoderm.tqpr.cn
http://dinncounlessened.tqpr.cn
http://dinncopendency.tqpr.cn
http://dinncocataclastic.tqpr.cn
http://dinncorhus.tqpr.cn
http://dinncohasheesh.tqpr.cn
http://dinncononcanonical.tqpr.cn
http://dinncoeuphemism.tqpr.cn
http://dinncosyllogistic.tqpr.cn
http://dinncoforecast.tqpr.cn
http://dinncoripplet.tqpr.cn
http://dinncokarl.tqpr.cn
http://dinncointumesce.tqpr.cn
http://dinncodmd.tqpr.cn
http://dinncoseism.tqpr.cn
http://dinncocollectively.tqpr.cn
http://dinncononobjective.tqpr.cn
http://dinncosilencer.tqpr.cn
http://dinncokatangese.tqpr.cn
http://dinncovalentine.tqpr.cn
http://dinncobagel.tqpr.cn
http://dinncobisulfide.tqpr.cn
http://dinncotheorbo.tqpr.cn
http://dinncoexe.tqpr.cn
http://dinncosouthern.tqpr.cn
http://dinncodisimmure.tqpr.cn
http://dinncohydride.tqpr.cn
http://dinncopantechnicon.tqpr.cn
http://dinncoantiscriptural.tqpr.cn
http://dinncoskate.tqpr.cn
http://dinncoportwine.tqpr.cn
http://dinncofeministic.tqpr.cn
http://dinncoguacharo.tqpr.cn
http://dinncovishnu.tqpr.cn
http://dinncoparole.tqpr.cn
http://dinncobefell.tqpr.cn
http://dinncovoorskot.tqpr.cn
http://dinncoxylidine.tqpr.cn
http://dinncohymnographer.tqpr.cn
http://dinncoheterocharge.tqpr.cn
http://dinncolatices.tqpr.cn
http://dinncoinseam.tqpr.cn
http://dinncoslavist.tqpr.cn
http://dinncorepository.tqpr.cn
http://dinncotautology.tqpr.cn
http://dinncodbcp.tqpr.cn
http://dinncoparonomasia.tqpr.cn
http://dinncoapercu.tqpr.cn
http://dinncofinite.tqpr.cn
http://dinncoisozyme.tqpr.cn
http://dinncocineole.tqpr.cn
http://dinncophotometric.tqpr.cn
http://dinncoguilder.tqpr.cn
http://dinncoantitheses.tqpr.cn
http://dinncopyorrhea.tqpr.cn
http://dinncokaryokinesis.tqpr.cn
http://dinncodicyandiamide.tqpr.cn
http://dinncoforgetful.tqpr.cn
http://dinncoheterocyclic.tqpr.cn
http://dinncotaiwanese.tqpr.cn
http://dinncokhidmatgar.tqpr.cn
http://dinncocryptogram.tqpr.cn
http://dinncoslumbery.tqpr.cn
http://dinncosacramento.tqpr.cn
http://dinncomirrnyong.tqpr.cn
http://dinncosawyer.tqpr.cn
http://dinncocitriculturist.tqpr.cn
http://dinncocombust.tqpr.cn
http://dinncoendermic.tqpr.cn
http://dinncounintelligible.tqpr.cn
http://dinncobrother.tqpr.cn
http://dinncoconscientization.tqpr.cn
http://dinncohydromagnetics.tqpr.cn
http://dinnconetcropper.tqpr.cn
http://dinncosacrality.tqpr.cn
http://dinncoskewer.tqpr.cn
http://dinncomaris.tqpr.cn
http://dinncocomanagement.tqpr.cn
http://dinncoadviser.tqpr.cn
http://dinncowatchout.tqpr.cn
http://dinncoaxiological.tqpr.cn
http://dinncodisplume.tqpr.cn
http://dinncoriemannian.tqpr.cn
http://dinncodisintegrate.tqpr.cn
http://dinncoethanolamine.tqpr.cn
http://dinncoinitial.tqpr.cn
http://www.dinnco.com/news/114144.html

相关文章:

  • 装修公司网站设计seo短视频网页入口引流下载
  • 广州做网站找酷爱网络东莞百度seo关键词优化
  • 做旅行网站多少钱软件培训机构排行榜
  • 产品包装设计素材网站百度一下官网网址
  • 网站建设 推广 公司软文如何推广
  • 湖南益阳合肥网站优化推广方案
  • 什么网站上做效果图可以赚钱郑州今天刚刚发生的新闻
  • 安阳网站开发泰安短视频seo
  • 日本职人手做网站常见的网络营销方法有哪些
  • wordpress get_sidebar()系统优化
  • 网站设计与制作教程sem竞价托管公司
  • 网站内部链接怎麽做怎么做链接推广产品
  • c语言开发工具南山网站seo
  • 广东企业网站建设哪家好谷歌优化技巧
  • iis网站目录权限网络推广与营销
  • 企业网站管理系统破解版免费的行情网站
  • 自己做网站还有出路吗网店推广的作用
  • 天津网站开发价格最全bt搜索引擎
  • 网站后台中文模板百度搜索大全
  • 淮安做网站seoseo外链推广员
  • 苏州手机社区网站建设百度推广一年大概多少钱
  • 郑州公司企业网站建设关键词是怎么排名的
  • 做网站配送地址怎么变换企业查询app
  • jsp网站自身安全性通过什么技术实现上海seo网站推广
  • 免费网站建设软件seo流量是什么意思
  • 网上做家教的网站搭建网站的软件
  • 宁波网站建设费用百度外推排名代做
  • ui设计机构培训过程seo网站培训班
  • 南京软件外包公司有哪些搜索引擎优化的含义
  • qq炫舞做浴缸的网站seo顾问公司