开发者社区> 问答> 正文

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

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

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

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

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

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

该怎么避免这种问题呢?


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

展开
收起
爱吃鱼的程序员 2020-06-08 20:01:59 921 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

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

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

    string
    number
    object
    array
    true
    false
    null

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

    2020-06-08 20:02:16
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Boot2.0实战Redis分布式缓存 立即下载
CUDA MATH API 立即下载
API PLAYBOOK 立即下载