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

我们在用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,都得不到数据~

转载于:https://my.oschina.net/lockupme/blog/737311

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值