欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

接口书写问题

程序员文章站 2022-03-16 15:35:54
...

我的接口是这样子的,有返回的时候,json里面的data才会有值,不然就会是一个空字符串
接口书写问题

接口书写问题

同事跟我说,他接收的时候,data是用json转成对象去取,然后如果data是空,他整个程序就爆掉了,要么我data返回null,不能返回空。我就搞不明白真的是这样子吗
接口书写问题

回复内容:

我的接口是这样子的,有返回的时候,json里面的data才会有值,不然就会是一个空字符串
接口书写问题

接口书写问题

同事跟我说,他接收的时候,data是用json转成对象去取,然后如果data是空,他整个程序就爆掉了,要么我data返回null,不能返回空。我就搞不明白真的是这样子吗
接口书写问题

确实是这样你原本的data是个对象,这里变成了数组他没做处理就会挂掉,你可以 $info['data'] = new stdClass();//返回空对象
作为一个服务端我觉得应该对字段类型敏感处理。

难道不用判断code值的吗?

你同事是不是用了框架去解析的json,让他手动解析一遍就好了。不要用框架。
不然框架不能判断data里面的[]这个是个空对象。
当然也可以在解析前判断一下code的值。

如果客户端代码写的不好的话,确实会这样。这锅甩给你了,要是你比他牛,你就甩回去;不然的话,接锅吧。。。

一般客户端都会使用类似于gson的框架去解析服务端返回的json数据,而数据格式是需要提前定义的。data既然是一个对象,那你就用对象的默认值null,我觉得这个需求也挺正常的。

我觉得这个就是,看谁好改 就谁改的问题啊 ~~
我觉得你说的也有道理,一般我同事他怎么给我方便返,我就怎么取。然后自己在做处理。
当然,具体问题具体分析吧~~

我觉得判断code的值比较好

作为API, 同一字段应该返回相同数据类型。
但是如果解决问题的话,使用code 也可以。
所以,如果在开发中就改接口,如果已经上线了,还是改接口。

所以需要接口联调

你同事说的没问题,要保证每个字段的数据类型始终一致,毕竟他们是强类型么,哈哈

app端写的不够严谨,先判断状态码code,成功则继续解析data,不成功,返回错误码code,不进行解析,
服务端因为php弱类型,app端对每个数据的类型都有要求,即强类型,尽量保证返回数据类型的一致性,data不为空的时候,返回的json字符串,app端解析为对象,data为空的时候,服务端判断是否为空,为空则赋值一个空对象

$obj = new stdClass();

php端干嘛不首先定义变量呢??$data=array()
另外客户端不管怎么样都要进行保证不闪退,,我建议你在开发过程中,模拟一些错误返回值给客户端看看客户端会不会闪退,然后让他背黑锅哈哈,开玩笑了

$result = array(
    "code" => "2",
    "msg" => "",
    "data" => (Object)array()
);

别直接写

$result = array(
    "code" => "2",
    "msg" => "",
    "data" => array()
);
相关标签: ios android php