对之前用PHP写接口,与APP对接一些问题汇总

原创
2016/08/24 17:15
阅读数 525

我们在用PHP写API接口的时候,对于数值型的处理问题进行一下汇总。因为PHP是弱类型语言,在与一些强类型语言对接的时候,经常出问题。

1、PHP对长整型数据有溢出问题
2、PHP从Mysql数据库里取数据的时候,取出的数据类型都是string类型。不管在定义表字段是int还是bigint等,取出来都是string类型
3、对于接口一般都是body提交,如果直接header输出的话,是接受不到数据的


那么用PHP写API接口的时候,如何处理呢?
第一个问题:升级PHP版本,升级到PHP7。对长整型的数字就不会溢出,当然你的服务器一般都是64位,和操作系统的位数也有一定的关系。
第二个问题:API接口最终返回给APP端都是JSON格式的加密,那么在PHP把数据从数据库中取出来时候,

json_encode($array, JSON_NUMERIC_CHECK);


注意“JSON_NUMERIC_CHECK”,把字符串类型的数字转换成数字型,这样就不会也问题了
第三个问题:直接贴代码:
 

$data = array('requestInfo' => $data);

$params = array('http' => array(
            'method' => 'POST',
            'header'=>array(
                "Content-Type:application/x-www-form-urlencoded"
            ),
            'content' => http_build_query($data)
));
$ctx = stream_context_create($params);
$res = file_get_contents(API_URL.$url, false, $ctx);
if(preg_match('/^\xEF\xBB\xBF/',$res)) {
         $res=substr($res,3);
}

如果不用array(‘requestInfo’=>$data),再封装一次的话,直接在'content'=>$data,接口层是得不到数据的,不管你采用file_get_contents还是curl,都得不到数据~

展开阅读全文
打赏
1
5 收藏
分享
加载中
更多评论
打赏
0 评论
5 收藏
1
分享
返回顶部
顶部