php的API接口,Java对接,在Null上出问题了。应该怎么避免这个问题呢?

cisiqo 发布于 2016/12/16 07:57
阅读 590
收藏 0

背景是:系统是php开发的,提供了一些第三方的API,然后有个对接方是JAVA开发的。

某一个接口,文档说明中也明确说了是字符串类型的,可以传空字符串,也可以不传这个参数。

但是对方偏偏给我传的是Null,然后呢,虽然系统没有返回报错信息。

但是传Null和空字符串的结果处理是完全不一样的。(传空字符串的结果是正确的)

php很容易碰见这种问题的,java通过http传过来的null,接收的时候就是字符串类型的“null”了,通过empty方法根本就判断不出来。

该怎么避免这种问题呢?


后续也挺搞的,关键是别人还因为这个问题给我们CEO打电话了。

加载中
1
leo108
leo108
对方的问题,他们不按照文档写代码还有理了?
leo108
leo108
回复 @NO17 : 哈哈哈,然后第二天另外一个第三方打电话给CEO说你们怎么不支持null字符串做参数,看楼主怎么办
老菜鸟0217
老菜鸟0217
回复 @leo108 : java接口返回null很正常,不像js可以自动将null视为空,php接收后就变成“null”了,那就自己写一个empty方法得了。再说你让别人改接口,既然别人直接通知CEO了,说明是很强势的第三方,别人会给你改么。
leo108
leo108
@NO17 报复心这么强?我踩你是因为你的方法完全就是误人子弟,如果楼主的业务允许"null"这个字符串作为参数,岂不是懵逼。那么你踩我的理由呢?
cisiqo
cisiqo
我们老大说我的时候我觉得挺委屈的,但是想一下也还好,我们是服务商,没有办法。
0
Minho
Minho
不会啊。我测试了没发现null和Null在php中有问题啊。你们交互不是用的json?
cisiqo
cisiqo
你可以拿你们的接口测试下。是json的数据。
0
kakai
kakai
这没法避免,按数据通信规则来讲,这就是自定义数据通信协议,协议双方必须严格遵守,这跟哪方用php哪方用java无关。对接方没看懂有点失误是正常的,稍微解释一下就行了。一般第三方通信接口都有技术支持,你认为你的api文档清晰明了,他们有可能觉得是一团糟,相互理解一下,都是苦逼技术活,何必相互为难呢
cisiqo
cisiqo
嗯,确实跟语言无关。无论哪种语言,都NUll和空是两种不同的对象。
0
w
w07128597

json中value有null是没问题的,  json标准中 key 类型是 string, value 类型有:

string
number
object
array
true
false
null

cisiqo
cisiqo
嗯,这个我知道
0
游客
游客
你的程序不严谨,你还怪别人调用方
cisiqo
cisiqo
你看到我那句话怪别人了,我是在寻求避免方法好吧
0
老菜鸟0217
老菜鸟0217
那就自己实现一个empty方法,把“null”也当成空。
cisiqo
cisiqo
回复 @leo108 : 谢谢,就事论事,这算一个方法。如果真的允许“null”作为参数,真的懵逼了。
leo108
leo108
回复 @nidongwo- : 千万别用这个方法,看我那层的评论
cisiqo
cisiqo
这个是好个好办法
返回顶部
顶部