PHP本地進行API介面測試步驟詳解

來源:互聯網
上載者:User
這次給大家帶來PHP本地進行API介面測試步驟詳解,PHP本地進行API介面測試的注意事項有哪些,下面就是實戰案例,一起來看一下。

最近寫API介面,每寫一個介面,我自己需要先測試一下,看有沒有語法錯誤,請求的資料對不對,但是很多都是POST請求,沒法直接在瀏覽器中開啟連結進行測試,所以必須要有個可以在本地發HTTP請求的類比工具,類比一下資料請求。

一開始我是這麼乾的,在本機wampserver運行目錄下建立一個檔案,在裡邊寫Curl請求,進行類比請求測試,但是每個介面需要的參數都不一樣,我需要不斷地修改請求的參數和API,很是不方便。到後來我的這個請求檔案裡邊亂糟糟的資料,我都分不清了:

在網上找了找相關的工具,有不少線上測試的,比如:ATOOL線上工具、Apizza等等,看了下他們做的都很好,使用非常方便,介面很漂亮,服務也很周到。但是我在考慮安全問題,同時它給我返回的是原始的JSON格式的資料,我習慣於看數組格式的,比較直觀。

於是乎,本著自己動手豐衣足食的理念,我就在本地寫一個簡易的API測試頁面,提交資料之後在本地實現API請求測試功能,既不用考慮安全問題,又可以對結果隨便轉換。只需要兩個檔案就搞定,一個是填寫資料的頁面post.html,另一個是接收post.html頁面傳過來的資料並處理請求實現功能的post.php檔案。

1、前端分頁檔post.html

只是是簡易的頁面,沒有複雜的布局,沒有JS特效,暫時唯寫了6個參數,一般來說也夠了,不夠的可以自行添加。這裡預設傳的都是body請求參數,請求方式也只使用了GET和POST。

<html xmlns="http://blog.csdn.net/sinat_35861727?viewmode=contents"><head><meta http-equiv = "Content-Type" content = "text/html;charset = utf8"><meta name = "description" content = "提交表單"><title>API介面請求表單</title></head><style type="text/css">.key1{width:100px;}.value1{width:230px;margin:0 0 0 10px;}.main{margin:0 auto;width:450px;height:auto;background:lightgray;padding:40px 40px;}.refer{width:100px;height:24px;}.url{width:350px;}</style><body><p class="main"><form method="POST" action="post.php" target="_blank"><p>請求地址:<input class="url" type="text" name="curl" placeholder="API介面地址"></p><p>參 數1: <input class="key1" type="text" name="key1" placeholder="參數名"> <input class="value1" type="text" name="value1" placeholder="參數值"></p><p>參 數2: <input class="key1" type="text" name="key2" placeholder="參數名"> <input class="value1" type="text" name="value2" placeholder="參數值"></p><p>參 數3: <input class="key1" type="text" name="key3" placeholder="參數名"> <input class="value1" type="text" name="value3" placeholder="參數值"></p><p>參 數4: <input class="key1" type="text" name="key4" placeholder="參數名"> <input class="value1" type="text" name="value4" placeholder="參數值"></p><p>參 數5: <input class="key1" type="text" name="key5" placeholder="參數名"> <input class="value1" type="text" name="value5" placeholder="參數值"></p><p>參 數6: <input class="key1" type="text" name="key6" placeholder="參數名"> <input class="value1" type="text" name="value6" placeholder="參數值"></p><p>請求方式: <select name="method"><option value="POST">POST請求</option><option value="GET">GET請求</option></select></p><p style="text-align:center;"><input class="refer" type="submit" value="提交"></p></form></p></body></html>

2、資料處理檔案post.php

接收post.html頁面傳過來的資料,並發送請求然後處理請求結果,前端頁面傳過來的都是Body請求參數,如果還需要Header參數的話,可以在這個檔案手動添加上去。

<?phpecho '<title>API介面請求響應</title>';/** * 設定網路請求配置 * @param [string] $curl 請求的URL * @param [bool] true || false 是否https請求 * @param [string] $method 請求方式,預設GET * @param [array] $header 請求的header參數 * @param [object] $data PUT請求的時候發送的資料對象 * @return [object] 返回請求響應 */function ihttp_request($curl,$https=true,$method='GET',$header=array(),$data=null){// 建立一個新cURL資源$ch = curl_init();// 設定URL和相應的選項curl_setopt($ch, CURLOPT_URL, $curl); //要訪問的網站//curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if($https){curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);}if($method == 'POST'){curl_setopt($ch, CURLOPT_POST, true); //發送 POST 請求curl_setopt($ch, CURLOPT_POSTFIELDS, $data);}// 抓取URL並把它傳遞給瀏覽器$content = curl_exec($ch);if ($content === false) { return "網路請求出錯: " . curl_error($ch); exit();}//關閉cURL資源,並且釋放系統資源curl_close($ch);return $content;}//檢查是否是連結格式function checkUrl($C_url){  $str="/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/";  if (!preg_match($str,$C_url)){  return false;  }else{ return true;  } } //檢查是不是HTTPSfunction check_https($url){$str="/^https:/";if (!preg_match($str,$url)){  return false;  }else{ return true;  } }if($_SERVER['REQUEST_METHOD'] != 'POST') exit('請求方式錯誤!');//發送請求function curl_query(){$data = array($_POST['key1'] => $_POST['value1'],$_POST['key2'] => $_POST['value2'],$_POST['key3'] => $_POST['value3'],$_POST['key4'] => $_POST['value4'],$_POST['key5'] => $_POST['value5'],$_POST['key6'] => $_POST['value6']);//數組去空$data = array_filter($data);//post請求的參數if(empty($data)) exit('請填寫參數');$url = $_POST['curl'];//API介面if(!checkUrl($url)) exit('連結格式錯誤');//檢查串連的格式$is_https = check_https($url); //是否是HTTPS請求$method = $_POST['method'];//請求方式(GET POST)$header = array();//攜帶header參數//$header[] = 'Cache-Control: max-age=0';//$header[] = 'Connection: keep-alive';if($method == 'POST'){$res = ihttp_request($url,$is_https,$method,$header,$data);print_r(json_decode($res,true));}else if($method == 'GET'){$curl = $url.'?'.http_build_query($data);//GET請求參數拼接$res = ihttp_request($curl,$is_https,$method,$header);print_r(json_decode($res,true));}else{exit('error request method');}}curl_query();?>

寫的很簡單,功能也不是很全面,正常情況下的POST和GET請求還是可以滿足的,至少本地測試查看結果是沒有問題的,有需要的小夥伴可下載代碼下來,然後根據自己的需求自行修改完善功能。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

PHP基於CURL發送JSON格式字串步驟詳解

ThinkPHP串連資料庫操作案列分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.