找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1631|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2487

主题

2487

帖子

7391

积分

论坛元老

Rank: 8Rank: 8

积分
7391
跳转到指定楼层
楼主
发表于 2018-2-14 05:49:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            如题,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端(客户端)接收到上述头信息后,再酌情自动化处理,参考代码如下:
'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;
}
            
            
您可能感兴趣的文章:
  • python模块restful使用方法实例
  • 在Python的框架中为MySQL实现restful接口的教程
  • php基于curl扩展制作跨平台的restfule 接口
  • 最好的8个Java RESTful框架
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端