首页   注册   登录
 zeyexe 最近的时间轴更新
zeyexe

zeyexe

V2EX 第 7115 号会员,加入于 2011-03-17 17:21:49 +08:00
今日活跃度排名 4061
JavaScript 为什么是 import ... from ...
  •  1   
    问与答  •  zeyexe  •  274 天前  •  最后回复来自 Sparetire
    28
    最近 macOS 上面网页视频无法播放
    macOS  •  zeyexe  •  2019-01-21 16:39:22 PM  •  最后回复来自 zeyexe
    4
    Flask 发布 1.0 版本了
    Python  •  zeyexe  •  2018-04-28 09:32:49 AM  •  最后回复来自 clino
    37
    Python 项目级别的变量应该怎么做
    Python  •  zeyexe  •  2016-08-05 11:09:28 AM  •  最后回复来自 repus911
    19
    出售几个 Office 365 家庭版的订阅
    二手交易  •  zeyexe  •  2015-12-07 03:16:46 AM
    有谁能帮忙下载 3 个 sublime 论坛的图标吗?
    Sublime Text  •  zeyexe  •  2015-06-27 16:48:06 PM  •  最后回复来自 zeyexe
    5
    Ubuntu 如何查询包中的安装脚本信息
    Ubuntu  •  zeyexe  •  2015-06-11 11:02:45 AM  •  最后回复来自 facat
    7
    Mysql Innodb 中 PRIMARY KEY 对性能的影响
    MySQL  •  zeyexe  •  2014-12-21 12:11:10 PM  •  最后回复来自 zeyexe
    12
    NAT 后面的应用如何获取到源 IP
    问与答  •  zeyexe  •  2014-12-06 18:51:17 PM  •  最后回复来自 zeyexe
    11
    zeyexe 最近回复了
    2 天前
    回复了 z0z 创建的主题 全球工单系统 baidu 主页里的 logo 看起来像块膏药
    似乎是早年为了兼容 IE 做的图片。
    23 天前
    回复了 Justin13 创建的主题 macOS 最新版播放视频卡死
    我用 10.14.6 也在看直播的时候卡死过好几次了,用的是 Edge Beta 浏览器,直播是虎牙。我比较怀疑是 Edge 的问题,因为用 Edge 以前从来没有卡死过。
    50 天前
    回复了 saltbo 创建的主题 问与答 求问有没有开源的账号系统?
    keycloak +1

    keycloak 功能挺全面的。
    68 天前
    回复了 yitd 创建的主题 DNS 如何自己搭建 DNS 解析并可自定义 ip?
    CoreDNS
    @icris #297 业务代码在 try 内部很正常。区别是我们对于业务代码中失败的请求( code 不是 0 )这部分的理解,我是认为成功的请求应该是 HTTP 200 在前端放到 try 处理,失败的请求是 HTTP 4xx 或者 5xx 在前端放到 catch 或者全局拦截器处理,网关 /网络错误是 HTTP 5xx 放到全局拦截器处理。catch 也不是只能弹窗,try 能做的事情 catch 也能做。
    说什么业务码多 http code 不够,其实 http code 是一种归纳分类,你的业务码最好放到对应的分类下面,我认为这个做法对于 rest 风格很重要。只用 200 状态码的业务最好不要宣称自己是 restful,这可能达不到及格线。
    @icris 4xx 和 200 并没有区别,也是可以像 200 在 catch 里面写逻辑的,5xx 也是多种类型的,有些是 api 系统可以处理的问题,有些不是来自 api 而是来自网关。

    说到底,我的观点是用 http status code 给业务 code 分组,而且这个分组还挺有用的。
    我算是看明白了,这里很多人根本就不打算在前端处理 HTTP Status Code。

    他们认为全部都可以放到 200 下处理,正常按 Restful 风格的应该放到 401、403 的错误也放 200 下处理。但是 5xx 错误你们怎么办呢,5xx 错误很可能就没有 HTTP Body,又去哪里看业务 code 呢。话说回来,如果你为处理 5xx 错误开了一个 if 分支了,为什么不能为 4xx 错误开一个 if 分支呢。


    我的做法是这样的:

    API 方面,业务状态正常的放到 HTTP 200 状态码下返回,直接返回数据,不包一层;业务状态异常的放到 HTTP 4xx 状态码下返回,使用固定的数据结构返回,固定的结构包含 code、message 等字段;能处理的 HTTP 5xx 状态一般使用和 4xx 一样的固定结构返回。


    前端方面,收到数据之后线判断 HTTP 状态码,如果是 200,就一切正常处理;如果是 4xx 错误,再根据返回的业务 code 处理,或者直接显示 message,或者根据业务 code 执行预定义逻辑;如果是 5xx 错误,可以尝试读取 HTTP Body 了,如果读取到数据了,就和 4xx 错误一样处理,如果没有读取到数据,就显示默认错误。
    102 天前
    回复了 xuxu5112 创建的主题 Apple macbookpro15 2015 充电问题 magsafe2 又又又挂了额
    @zhouweiluan #5 是 magsafe2 适配器吗?型号是什么? A1435 吗?报价多少?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   782 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 23:16 · PVG 07:16 · LAX 15:16 · JFK 18:16
    ♥ Do have faith in what you're doing.