博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对之前用PHP写接口,与APP对接一些问题汇总
阅读量:6038 次
发布时间:2019-06-20

本文共 1022 字,大约阅读时间需要 3 分钟。

  hot3.png

我们在用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

你可能感兴趣的文章
判断是pc还是moblie
查看>>
PowerShell 获取磁盘使用情况
查看>>
CDN缓存那些事 转载陈小龙哈2016-09-2
查看>>
html5+go+websocket简单实例代码
查看>>
负载均衡技术概述
查看>>
Java GC 日志解析
查看>>
浅谈数据中心分级
查看>>
MySQL高可用性之Keepalived+Mysql
查看>>
linux C函数之strdup函数分析
查看>>
MySQL 优化工具 MySQLTuner
查看>>
Python脚本之TCP端口检查
查看>>
monitoring tomcat with zabbix
查看>>
iptables防火墙 --Linux详解
查看>>
php curl 分离header和body信息
查看>>
bash特性小结&bash变量
查看>>
李开复:搞无人车在电车难题上论争个没完,这样子不行的
查看>>
dedecms后台20位密码解密、32位24位的DEDE密码如何破解
查看>>
List迭代时报ConcurrentModificationException异常
查看>>
安装ansible自动运维工具
查看>>
JavaScript新手的第一堂函数课:定义与参数(文末福利)
查看>>