如题,PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据?

其实这也不难,因为Rest API也是基于http协议的,只要我们按照协议走,就能做到自动化识别 API 的内容,方法如下:

1、API服务端要返回明确的 http Content-Type头信息,如:Content-Type: application/json; charset=utf-8

Content-Type: application/xml; charset=utf-8

Content-Type: text/html; charset=utf-8

2、PHP端(客户端)接收到上述头信息后,再酌情自动化处理,参考代码如下:<?php

// 请求初始化

$url = 'http://www.php.cn';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);

// 返回的 http body 内容

$response = curl_exec($ch);

// 返回的 http header 的 Content-Type 的内容

$contentType = curl_getinfo($ch, 'content_type');

// 关闭请求资源

curl_close($ch);

// 结果自动格式输出

$autoDetectFormats = array(

'application/xml' => 'xml',

'text/xml' => 'xml',

'application/json' => 'json',

'text/json' => 'json',

'text/csv' => 'csv',

'application/csv' => 'csv',

'application/vnd.php.serialized' => 'serialize'

);

if (strpos($contentType, ';'))

{

list($contentType) = explode(';', $contentType);

}

$contentType = trim($contentType);

if (array_key_exists($contentType, $autoDetectFormats))

{

echo '_' . $autoDetectFormats[$contentType]($response);

}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++

// 常用 格式化 方法

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++

/**

* 格式化xml输出

*/

function _xml($string)

{

return $string ? (array)simplexml_load_string($string, 'SimpleXMLElement', LIBXML_NOCDATA) : array();

}

/**

* 格式化csv输出

*/

function _csv($string)

{

$data = array();

$rows = explode("\n", trim($string));

$headings = explode(',', array_shift($rows));

foreach( $rows as $row )

{

// 利用 substr 去掉 开始 与 结尾 的 "

$data_fields = explode('","', trim(substr($row, 1, -1)));

if (count($data_fields) === count($headings))

{

$data[] = array_combine($headings, $data_fields);

}

}

return $data;

}

/**

* 格式化json输出

*/

function _json($string)

{

return json_decode(trim($string), true);

}

/**

* 反序列化输出

*/

function _serialize($string)

{

return unserialize(trim($string));

}

/**

* 执行PHP脚本输出

*/

function _php($string)

{

$string = trim($string);

$populated = array();

eval("\$populated = \"$string\";");

return $populated;

}

更多PHP实现自动识别Restful API的返回内容类型相关文章请关注PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

apirestful php自动测试,PHP实现自动识别Restful API的返回内容类型相关推荐

  1. php 自动返回,PHP实现自动识别Restful API的返回内容类型

    如题,PHP如何自动识别第三方Restful API的内容,自动渲染成 json.xml.html.serialize.csv.php等数据? 其实这也不难,因为Rest API也是基于http协议的 ...

  2. RESTful API接口基本内容

    RESTful API接口基本内容 目录 RESTful API接口基本内容 一.RESTful是什么? 1.1.基本特点 1.2.设计概念和准则 1.3.http协议 二.RESTful与SOAP ...

  3. SpringBoot使用教程【1】Restful API设计 返回json,xml格式...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qingfeng812/article/details/74738885 效果展示: 浏览器截图 ht ...

  4. web返回的数据集格式_SpringBoot RESTful API返回统一数据格式还不懂?

    关于 Spring 的全局处理,我有两方面要说: 统一数据返回格式 统一异常处理 为了将两个问题说明清楚,将分两个章节分别说明,本章主要说第一点 有童鞋说,我们项目都做了这种处理,就是在每个 API ...

  5. springboot集成swagger2构建RESTful API文档

    在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可 ...

  6. 整合swagger2生成Restful Api接口文档

    整合swagger2生成Restful Api接口文档 swagger Restful文档生成工具 2017-9-30 官方地址:https://swagger.io/docs/specificati ...

  7. 好RESTful API的设计原则

    做出一个好的API设计很难.API表达的是你的数据和你的数据使用者之间的契约.打破这个契约将会招致很多愤怒的邮件,和一大堆伤心的用户-因为他们手机上的App不工作了.而文档化只能达到一半的效果,并且也 ...

  8. 深入探索REST(1):如何设计好的RESTful API?

    REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...

  9. 如何设计好的RESTful API?

    REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...

最新文章

  1. 一次订单号重复引起的事故,可把我给坑惨了!
  2. 什么是交换(Swap)与伪交换(Pseudo swap)
  3. 刘强东:第四次零售革命意义将超互联网
  4. 日期DatePicker与时间TimePicker控件
  5. cad转shp 奥维_CAD转换工具程序包(附下载)
  6. Tomcat启动设置环境变量
  7. GetSystemInfo()
  8. matlab gradient
  9. 解决表单提交的数据丢失问题
  10. 【CSS】学习笔记2 字体设置
  11. 因此,您处于if / else地狱中-这是摆脱困境的方法
  12. 11988 - Broken Keyboard (a.k.a. Beiju Text)
  13. 直击平昌!2天40位大咖的平昌区块链论坛精华都在这了!
  14. CentOS 6.7 配置JSP运行环境之resin
  15. JS中某事件需要同时调用几个function另类解决办法。
  16. QT 5.9.0下载安装及配置教程(自动化运维环境)
  17. Windows错误、问题汇总
  18. 大学课设之Mysql图书管理设计
  19. ical4j 实现ICS文件的生成和解析
  20. php获得客户端ip地址范例

热门文章

  1. mysql打印语句_抓取mysql、redis、mongodb、http等协议并打印语句
  2. no such file or directory什么意思_为什么这次 MySQL 崩溃恢复要这么久-爱可生
  3. Vue之表单数据收集
  4. 作为开发,你对进程和线程能否区分开来呢?
  5. android checkbox 选中事件_挖穿Android第四十九天
  6. Java 算法 换零钞
  7. 当前微型计算机的主存储器可分为,当前微型计算机的主存储器可分为
  8. pytorch搭建TextCNN与使用案例
  9. python使用xlwt创建与保存excel文件
  10. sklearn 使用joblib保存模型,并解决cannot import name joblib from sklearn.externals报错