Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung der Schritte zum lokalen Testen der API-Schnittstelle mit PHP

Ausführliche Erläuterung der Schritte zum lokalen Testen der API-Schnittstelle mit PHP

php中世界最好的语言
php中世界最好的语言Original
2018-05-17 15:12:382382Durchsuche

Dieses Mal werde ich Ihnen die Schritte zum lokalen Testen der API-Schnittstelle in PHP ausführlich erläutern. Was sind die Vorsichtsmaßnahmen zum lokalen Testen der API-Schnittstelle in PHP? ein Blick.

Ich habe in letzter Zeit API-Schnittstellen geschrieben. Jedes Mal, wenn ich eine Schnittstelle schreibe, muss ich sie zuerst selbst testen, um zu sehen, ob es irgendwelche Syntaxfehler gibt und ob die angeforderten Daten korrekt sind. Da es sich bei vielen davon jedoch um POST-Anfragen handelt, gibt es keine Möglichkeit, den Link zum Testen direkt im Browser zu öffnen. Sie benötigen daher ein Simulationstool, das HTTP-Anfragen lokal senden kann, um Datenanfragen zu simulieren.

Das habe ich am Anfang gemacht. Ich habe eine Datei im lokalen wampserver-Laufverzeichnis erstellt, darin Curl-Anfragen geschrieben und simulierte Anforderungstests durchgeführt. Aber jedes Mal erfordert jede Schnittstelle unterschiedliche Parameter. Ich muss die angeforderten Parameter und die API ständig ändern, was sehr unpraktisch ist. Später konnte ich die unordentlichen Daten in meiner Anforderungsdatei nicht unterscheiden:

Ich habe im Internet nach verwandten Tools gesucht, und es gibt viele Online-Tests, zum Beispiel: ATOOL Online-Tools, Apizza usw. Nachdem ich sie mir angesehen habe, funktionieren sie alle sehr gut, sind sehr einfach zu bedienen, haben schöne Schnittstellen und sehr rücksichtsvolle Dienste. Aber ich denke über Sicherheitsprobleme nach, und gleichzeitig gibt es mir die ursprünglichen Daten im JSON-Format zurück, wie ich es gewohnt bin Betrachten von Arrays Das Format ist relativ intuitiv.

Im Einklang mit dem Konzept, selbst genug Essen und Kleidung zu haben, habe ich lokal eine einfache API-Testseite geschrieben und die API-Anforderungstestfunktion lokal implementiert um Sicherheitsaspekte zu berücksichtigen und die Ergebnisse nach Belieben auszuwerten. Dazu sind nur zwei Dateien erforderlich: eine ist die Seite post.html, die die Daten ausfüllt, und die andere ist die Datei post.php, die die Daten von der Seite post.html empfängt und die Anforderung zur Implementierung der Funktion verarbeitet .

1. Frontend-Seitendatei post.html

Es ist nur eine einfache Seite, nichts kompliziert Es gibt keine JS-Spezialeffekte für das Layout. Im Allgemeinen sind es ausreichend. Wenn nicht, können Sie diese selbst hinzufügen. Standardmäßig werden hier BodyAnfrageparameter übergeben und für Anfragemethoden werden nur GET und POST verwendet.

<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. DatenVerarbeitungsdateipost.php

empfängt die Daten von der post.html-Seite und Senden Sie eine Anfrage und verarbeiten Sie dann das Anfrageergebnis. Alle Body-Anfrageparameter werden von der Front-End-Seite übergeben. Wenn Sie noch Header-Parameter benötigen, können Sie diese manuell in dieser Datei hinzufügen.

<?php
echo '<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; 
 } 
} 
//检查是不是HTTPS
function 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();
?>

ist sehr einfach zu schreiben und die Funktionen sind nicht sehr umfassend. Unter normalen Umständen können POST- und GET-Anfragen immer noch erfüllt werden Sie können den Code herunterladen und die Funktionen dann entsprechend Ihren eigenen Anforderungen ändern und verbessern.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte für PHP zum Senden einer JSON-Formatzeichenfolge basierend auf CURL

ThinkPHP-Verbindung Fallanalyse des Datenbankbetriebs

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Schritte zum lokalen Testen der API-Schnittstelle mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn