国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP實現自動識別Restful API的返回內容類型

2024-05-04 23:30:58
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP實現自動識別Restful API的返回內容類型,并實現自動自動渲染成 json、xml、html、serialize、csv、php等數據格式輸出,需要的朋友可以參考下

如題,PHP如何自動識別第三方Restful API的內容,自動渲染成 json、xml、html、serialize、csv、php等數據?

其實這也不難,因為Rest API也是基于http協議的,只要我們按照協議走,就能做到自動化識別 API 的內容,方法如下:

1、API服務端要返回明確的 http Content-Type頭信息,如:

 

 
  1. Content-Type: application/json; charset=utf-8 
  2. Content-Type: application/xml; charset=utf-8 
  3. Content-Type: text/html; charset=utf-8 

2、PHP端(客戶端)接收到上述頭信息后,再酌情自動化處理,參考代碼如下:

 

  1. <?php 
  2. // 請求初始化 
  3. $url = 'http://m.survivalescaperooms.com'
  4. $ch = curl_init(); 
  5. curl_setopt($ch, CURLOPT_URL, $url); 
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  7. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
  8.  
  9. // 返回的 http body 內容 
  10. $response = curl_exec($ch); 
  11.  
  12. // 返回的 http header 的 Content-Type 的內容 
  13. $contentType = curl_getinfo($ch'content_type'); 
  14.  
  15. // 關閉請求資源 
  16. curl_close($ch); 
  17.  
  18. // 結果自動格式輸出 
  19. $autoDetectFormats = array
  20. 'application/xml' => 'xml'
  21. 'text/xml' => 'xml'
  22. 'application/json' => 'json'
  23. 'text/json' => 'json'
  24. 'text/csv' => 'csv'
  25. 'application/csv' => 'csv'
  26. 'application/vnd.php.serialized' => 'serialize' 
  27. ); 
  28.  
  29. if (strpos($contentType';')) 
  30. list($contentType) = explode(';'$contentType); 
  31.  
  32. $contentType = trim($contentType); 
  33.  
  34. if (array_key_exists($contentType$autoDetectFormats)) 
  35. echo '_' . $autoDetectFormats[$contentType]($response); 
  36.  
  37. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
  38. // 常用 格式化 方法 
  39. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
  40.  
  41. /** 
  42. * 格式化xml輸出 
  43. */ 
  44. function _xml($string
  45. return $string ? (array)simplexml_load_string($string'SimpleXMLElement', LIBXML_NOCDATA) : array(); 
  46.  
  47. /** 
  48. * 格式化csv輸出 
  49. */ 
  50. function _csv($string
  51. $data = array(); 
  52.  
  53. $rows = explode("/n", trim($string)); 
  54. $headings = explode(','array_shift($rows)); 
  55. foreach$rows as $row ) 
  56. // 利用 substr 去掉 開始 與 結尾 的 " 
  57. $data_fields = explode('","', trim(substr($row, 1, -1))); 
  58. if (count($data_fields) === count($headings)) 
  59. $data[] = array_combine($headings$data_fields); 
  60.  
  61. return $data
  62.  
  63. /** 
  64. * 格式化json輸出 
  65. */ 
  66. function _json($string
  67. return json_decode(trim($string), true); 
  68.  
  69. /** 
  70. * 反序列化輸出 
  71. */ 
  72. function _serialize($string
  73. return unserialize(trim($string)); 
  74.  
  75. /** 
  76. * 執行PHP腳本輸出 
  77. */ 
  78. function _php($string
  79. $string = trim($string); 
  80. $populated = array(); 
  81. eval("/$populated = /"$string/";"); 
  82.  
  83. return $populated
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临夏县| 辽阳市| 二连浩特市| 响水县| 平顶山市| 广平县| 垫江县| 上高县| 深水埗区| 临湘市| 宁南县| 庆元县| 临泽县| 阜平县| 曲麻莱县| 咸丰县| 乳源| 土默特右旗| 分宜县| 和龙市| 合阳县| 莱芜市| 赤峰市| 承德市| 冷水江市| 卓尼县| 图木舒克市| 舟山市| 建德市| 明溪县| 田林县| 惠东县| 乐山市| 深州市| 翼城县| 西林县| 孙吴县| 保靖县| 恩施市| 麻城市| 开远市|