PHP API接口

2015.8.18

PHP生成JSON数据

json_encode($value) 方法

(response.php和testapi.php)

通信标准格式:

code 状态码   message 提示信息   data返回数据

json如何封装通信数据方法

Response类

  1. <?php
  2. classResponse{
  3. /**
  4. *按json方式输出通信数据
  5. *@param integer $code 状态码
  6. *@param string $message 提示信息
  7. *@param array $data 数据
  8. *return string
  9. */
  10. publicstaticfunction json($code,$message=‘‘,$data=array()){
  11. if(!is_numeric($code)){
  12. return‘‘;
  13. }
  14. $result=array(
  15. ‘code‘=>$code,
  16. ‘message‘=>$message,
  17. ‘data‘=>$data
  18. );
  19. echo json_encode($result);
  20. exit;
  21. }
  22. }

实例使用

  1. <?php
  2. require_once(‘./apitest.php‘);
  3. $arr=array(
  4. ‘id‘=>1,
  5. ‘name‘=>‘huwei‘,
  6. );
  7. Response::json(200,‘数据返回成功‘,$arr);

PHP生成XML数据

1.组装字符串

2.使用系统类

DomDocument

XMLWriter

SimpleXML

封装XML通信接口

封装方法

  1. /**
  2. *按XML方式输出通信数据
  3. *@param integer $code 状态码
  4. *@param string $message 提示信息
  5. *@param array $data 数据
  6. *return string
  7. */
  8. publicstaticfunction xml($code,$message=‘‘,$data=array()){
  9. if(!is_numeric($code)){
  10. return‘‘;
  11. }
  12. $result=array(
  13. ‘code‘=>$code,
  14. ‘message‘=>$message,
  15. ‘data‘=>$data
  16. );
  17. header("Content-Type:text/xml");//将头信息转换为XML格式
  18. $xml="<?xml version=‘1.0‘ encoding=‘UTF-8‘?>\n";
  19. $xml.="<root>\n";
  20. $xml.=self::xmlToEncode($result);
  21. $xml.="</root>";
  22. return $xml;
  23. }
  24. publicstaticfunction xmlToEncode($data){
  25. $xml=$attr="";
  26. foreach($data as $k=>$v){
  27. if(is_numeric($k)){
  28. $attr=" id=‘{$k}‘";
  29. $k="item";
  30. }
  31. $xml.="<{$k}{$attr}>";
  32. $xml.=is_array($v)?self::xmlToEncode($v):$v;
  33. $xml.="</{$k}>";
  34. }
  35. return $xml;
  36. }

实现:

  1. <?php
  2. require_once(‘./apitest.php‘);
  3. $arr=array(
  4. ‘id‘=>1,
  5. ‘name‘=>‘huwei‘,
  6. ‘type‘=>array(1,2,3)
  7. );
  8. //echo Response::json(200,‘数据返回成功‘,$arr);
  9. echo Response::xml(200,‘数据返回成功‘,$arr);

综合通信方法封装

封装方法

  1. const JSON="json";
  2. /**
  3. *按综合方式输出通信数据
  4. *@param integer $code 状态码
  5. *@param string $message 提示信息
  6. *@param array $data 数据
  7. *@param string $type 类型
  8. *return string
  9. */
  10. publicstaticfunction show($code,$message=‘‘,$data=array(),$type==self::JSON){
  11. if(!is_numeric($code)){
  12. return‘‘;
  13. }
  14. $result=array(
  15. ‘code‘=>$code,
  16. ‘message‘=>$message,
  17. ‘data‘=>$data,
  18. );
  19. if($type==‘json‘){
  20. returnself::json($code,$message,$data);
  21. }elseif($type==‘array‘){
  22. var_dump($result);
  23. }elseif($type==‘xml‘){
  24. returnself::xml($code,$message,$data);
  25. }else{
  26. //TODO
  27. }
  28. }

调用方式:

  1. <?php
  2. require_once(‘./apitest.php‘);
  3. $arr=array(
  4. ‘id‘=>1,
  5. ‘name‘=>‘huwei‘,
  6. ‘type‘=>array(1,2,3)
  7. );
  8. //echo Response::json(200,‘数据返回成功‘,$arr);
  9. //echo Response::xml(200,‘数据返回成功‘,$arr);
  10. echo Response::show(200,‘数据返回成功‘,$arr,‘array‘);

缓存技术:

1.静态缓存

保存在磁盘上的静态文件,用PHP生成的数据放入静态缓存文件中

PHP操作缓存(file.php)

生成缓存、获取缓存、删除缓存

封装类

  1. <?php
  2. classFile{
  3. private $_dir;// 文件路径
  4. const EXT=‘.txt‘;//文件后缀
  5. publicfunction __construct(){
  6. $this->_dir=dirname(__FILE__).‘\files\/‘;//获取该项目同级目录
  7. }
  8. publicfunction cacheData($key,$value=‘‘,$path=‘‘){
  9. $filename=$this->_dir.$path.$key.self::EXT;
  10. if($value!==‘‘){//将value值写入缓存
  11. if(is_null($value)){
  12. return@unlink($filename);
  13. }
  14. $dir=dirname($filename);
  15. if(!is_dir($dir)){
  16. mkdir($dir,0777);
  17. }
  18. return file_put_contents($filename,json_encode($value));//若成功返回字节数,不然为false
  19. }
  20. if(!is_file($filename)){
  21. returnFalse;
  22. }else{
  23. return json_decode(file_get_contents($filename),true);
  24. }
  25. }
  26. }

调用类

  1. <?php
  2. //require_once(‘./apitest.php‘);
  3. require_once(‘./file.php‘);
  4. $arr=array(
  5. ‘id‘=>1,
  6. ‘name‘=>‘huwei‘,
  7. ‘type‘=>array(1,2,3)
  8. );
  9. //echo Response::json(200,‘数据返回成功‘,$arr);
  10. //echo Response::xml(200,‘数据返回成功‘,$arr);
  11. //echo Response::show(200,‘数据返回成功‘,$arr,‘array‘);
  12. $file=newFile();
  13. //echo $file->cacheData(‘index_cache‘,$arr); //写入操作
  14. //var_dump($file->cacheData(‘index_cache‘)); //读取操作
  15. echo $file->cacheData(‘index_cache‘,null);//删除操作

2.Memcache,redis

设置缓存操作

获取缓存操作

删除缓存操作

1.Memcache和Redis都是用来管理数据的

2.他们数据都是存放在内存上的

3.Redis可以定期将数据备份到磁盘(持久化)

4.Memchache只是简单的key/value缓存

5.Redis不仅仅支持简单的k/v类型的数据,同时还提供list、set、hash等数据结构的存储

附件列表

时间: 2024-12-09 06:42:12

PHP API接口的相关文章

微信小程序的Web API接口设计及常见接口实现

微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们设计和编写Web API平台是非常重要的,通过这个我们可以实现数据的集中控制和管理,本篇随笔介绍基于Asp.NET MVC的Web API接口层的设计和常见接口代码的展示,以便展示我们常规Web API接口层的接口代码设计.参数的处理等内容. 1.Web API整体性的架构设计 我们整体性的架构设计

微信小程序API接口

微信小程序API接口 wx.request(OBJECT)   wx.request发起的是 HTTPS 请求. OBJECT参数说明: url->开发者服务器接口地址->String; data->请求的参数->Object.String; header->设置请求的 header , header 中不能设置 Referer->Object; method->默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE,

百度翻译APi接口实现

案例使用百度翻译API接口,实现文本翻译 为保证翻译质量,请将单次请求长度控制在 6000 bytes以内.(汉字约为2000个) 签名生成方法如下: 1.将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看) 按照 appid+q+salt+密钥 的顺序拼接得到字符串1. 2.对字符串1做md5,得到32位小写的sign. 注意: 1.请先将需要翻译的文本转换为UTF-8编码 2.在发送HTTP

php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能

2016年12月29日13:45:27 关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是restful api 请明白一点,这个只是设计指导思想,也就是设计风格 ,比如你需要遵循这些原则 原则条件REST 指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是 RESTful.Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的.从客户端到服务

总结的一些微信API接口

本文给大家介绍的是个人总结的一些微信API接口,包括微信支付.微信红包.微信卡券.微信小店等,十分的全面,有需要的小伙伴可以参考下. 1. [代码]index.php <?php include_once 'lib.inc.php';   $wcObj = new WeChat("YOUKUIYUAN"); $wcObj->wcValid(); 2. [代码]微信入口类 <?php /**  * Description of wechat  *  * @author

Thinkphp5使用api接口demo

阿里云有免费的手机归属地api接口,作为新手的博主决定使用该接口写一个手机归属地查询网站,学习api的使用. 主要思路: 获取前台传入的手机号->写出请求url,请求头,请求方式->初始化cURL变量->设置cURL变量参数->执行查询,保存返回的json数据->关闭查询连接->将json数据解析为php数组->将该php数组赋值到模板->前台调用该数组值. public function index() { $num=input('m'); //获取前台提

Restful风格API接口开发springMVC篇

Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 在Restful风格中,用户请求的url使用同一个url而用请求方式:get,post,delete,put...等方式对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口. 在Restful风格中,现

C++传智笔记(6):socket客户端发送报文接受报文的api接口

#define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "stdlib.h" #include "string.h" #include "itcast_comm.h" #include "memwatch.h" #include "itcastlog.h" /* 下面定义了一套socket客户端发送报文接受报文的api接口

etcd api 接口

etcd api接口 采用标准的restful 接口,支持http 和 https 两种协议. 1. PUT 为etcd存储的键赋值, 即创建 message 键值,赋值为"Hello world" 1 [[email protected] ~]# curl http://127.0.0.1:2379/v2/keys/message -X PUT -d value="Hello world" | python -m json.tool 2 % Total % Rec

调用API接口下载腾讯CDN访问日志

公司使用腾讯cdn为网站静态内容加速,由于业务需求,需要每天下载昨天的日志(因为腾讯方面给出回复,访问日志会有2个小时或以上时间的延迟,所以不建议下载当天日志,所以每天统计前一天的日志以做分析).因为cdn是由运维来管理,但是这个需求是业务的,如果每天都由运维进行下载,再通过邮件或其他工具发送,可能就显得麻烦.所幸腾讯CDN提供了API接口,因此采用shell脚本调用API进行下载的方式,定期下载日志,这样只要业务人员运行这个脚本就能自行下载日志,解放了运维的工作. #!/bin/bash ##