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

zeyexe

V2EX 第 7115 号会员,加入于 2011-03-17 17:21:49 +08:00
今日活跃度排名 2529
JavaScript 为什么是 import ... from ...
  •  1   
    问与答  •  zeyexe  •  233 天前  •  最后回复来自 Sparetire
    28
    最近 macOS 上面网页视频无法播放
    macOS  •  zeyexe  •  327 天前  •  最后回复来自 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 最近回复了
    9 天前
    回复了 saltbo 创建的主题 问与答 求问有没有开源的账号系统?
    keycloak +1

    keycloak 功能挺全面的。
    26 天前
    回复了 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 错误一样处理,如果没有读取到数据,就显示默认错误。
    61 天前
    回复了 xuxu5112 创建的主题 Apple macbookpro15 2015 充电问题 magsafe2 又又又挂了额
    @zhouweiluan #5 是 magsafe2 适配器吗?型号是什么? A1435 吗?报价多少?
    61 天前
    回复了 w0nglend 创建的主题 优惠信息 ThinkPlus 口红电源特惠,就今天
    @oIMOo 兄弟用着怎么样。最近我的 2015 款的 magsafe2 头坏掉了,也想买个转接线接 thinkplus,但是不知道能不能用。
    66 天前
    回复了 l4ever 创建的主题 Python vscode 坑死我了.
    一般认为从终端复制的字符串不是可靠的数据。因为有一定可能出现少字符、多字符、不可见字符等问题。
    https://readme.localtest.me/

    可以使用自定义子域名。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1707 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 16:37 · PVG 00:37 · LAX 08:37 · JFK 11:37
    ♥ Do have faith in what you're doing.