首页   注册   登录

evilic

V2EX 第 140296 号会员,加入于 2015-09-27 23:46:19 +08:00
evilic 最近回复了
50 天前
回复了 h82258652 创建的主题 程序员 关于 RESTful 包一层的问题
想遵守规范,又想坚持自己坚持的,不行的话,接口就分 /v1 /v2 ……
```
code = 200
msg = 'success'
try:
data = service.do_something(a, b, c)
except Exception as e:
code = e.code
msg = str(e)
self.write({'code': code, 'msg': msg, 'data': data})
```

上面这是示例代码,不是真实代码。
我觉得这个是正常代码的写法,不是你说的额外包一层呀。反倒你说的,我觉得是需要额外的去一层。

```
if code == 200:
result.pop('code')
```
你的代码应该多了 2 行才对呀……
@h82258652 是你没听懂大家的回复,http 200 在实际应用中不能很准确的表示成功。
restful api 就是要让调用者爽。对于你提供的这种调用至少让我代码时不爽……我处理我的业务逻辑还觉得事儿多呢,哪里有时候再处理你的不同返回。
@h82258652
还是那句,看实际使用。
有些统一返回 http 200 的(无论是否成功执行,根本不返回 404,301,500 的),因为有些调用者不一定或不想处理 http 状态码。
例如我直接写个 html + js 调用,我根本不想处理 xhr.status,
又或者我直接就写 sh 脚本 curl 了,本身一个简单的脚本就完成了,现在还要去处理 $http_code["201"],$http_code["202"],心累啊。

人生苦短,我 python 去了。
@binux

LZ 哪里问“成功时”要不要包一层的? http 200 就是成功了?我 http 200 里面返回个 code 500,谁说它成功执行了?
@qlhai 是正解。

还有,就是看实际使用吧。有些统一返回 http 200 的,但是调用者以实际的 code 字段做判断。因为有些调用者不一定能处理 http 状态码呀,要兼容……
又或者调用者可能还有自己的处理逻辑需要记录下来,你返回一个 404,难道你不列出具体 404 的原因?

code 要加的。
买同分辨率的。根据我的经验,买了高分辨率之后,再看低分辨率的,眼睛极其不适应,就好像在看马赛克。
能折腾的话就 kvm,不想花太多时间的话,就 vmware。
就我个人的话,偏向于搭建一个 openstack ……
todo
78 天前
回复了 lake325 创建的主题 程序员 go 爬取 baidu+weibo+zhihu 热搜数据
直接写个 workflow (捷径)获取数据并显示,然后分享也来吧。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3888 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 35ms · UTC 05:39 · PVG 13:39 · LAX 21:39 · JFK 00:39
♥ Do have faith in what you're doing.