【PHP】API 실행 툴을 만들어 보자(그 2)
소개
PHP로 툴 작성의 네 번째입니다.
이전 API 도구의 계속으로 이번에는 PHP를 사용하여 클라이언트 측을 만들고 싶습니다.
PHP로 작성하는 이점에 대해
이전에 소개한 Chrome 확장 도구를 사용하면 서버와 통신 할 수 있지만,
일부러 클라이언트를 자작하는 의미가 있는가? 라고 의문으로 생각되는 분도 있을지도 모르기 때문에 조금 메리트에 대해서 기재합니다.
1.API 연속 실행
PHP를 사용하면 API를 연속적으로 실행할 수 있습니다.
이에 따라 예를 들어 서버의 부하 시험(1분간에 60회 이상 통신하는 등) 등을 쉽게 시험 가능하게 됩니다.
2. 다중 API 실행
1.과 비슷하지만, 데이터 삭제를 하는 API, 데이터 작성을 하는 API가 각각 있었다고 해서,
1회의 스크립트 실행으로 「데이터 삭제→데이터 작성」의 API를 연속으로 실행하면 편하게 데이터 작성을 실시한 환경이 구축 가능하게 됩니다.
개인적으로는 연속 실행할 수 있는 것이 제일의 장점은 아닐까 생각합니다.
클라이언트 작성
이제 클라이언트를 만들어 보겠습니다.
작성 장소는 전회와 같이 「c:\xampp\htdocs\api」폴더가 됩니다.
api 폴더에 client.php 파일을 만듭니다.
내용은 다음과 같습니다.
client.php//------------------------------------------------------
// client.php API送信クライアント
//
// 実行コマンド
// cd C:\xampp\htdocs\api\
// php client.php テスト
//------------------------------------------------------
// 引数チェック
if( count($argv) < 2 ){
echo "エラー:引数が足りません\n";
echo "EX:\n";
echo "php client.php テスト\n";
exit;
}
$param = $argv[1];
$url = "http://localhost/api/server.php"; // 接続先URL
echo "-----[api start]-----\n";
$ret = sendApi( $url, $param );
echo "-----[api end]-----\n";
// API実行
function sendApi( $url, $param ) {
// プロキシ情報
$proxy_host = "proxy_ipaddress";
$proxy_port = "port_no";
$proxy_user = "username";
$proxy_pass = "password";
$proxy_auth = base64_encode("$proxy_user:$proxy_pass");
// パラメータ設定
$content = "name=".$param."";
$content = mb_convert_encoding( $content, "UTF-8", "auto" );
// ヘッダデータ作成
$header = array(
"Content-Type: application/x-www-form-urlencoded;",
"Content-Length: ".strlen($content),
// "Proxy-Authorization: Basic ".$proxy_auth
);
$contextOptions = array(
"http" => array(
"protocol_version" => 1.1,
"method" => "POST",
"header" => implode( "\r\n", $header ),
"ignore_errors" => true,
// "proxy" => "tcp://$proxy_host:$proxy_port",
"request_fulluri" => true,
"content" => $content
)
);
$sslContext = stream_context_create( $contextOptions );
// API実行
$response = file_get_contents( $url, false, $sslContext );
// リクエストパラメータ保存
file_put_contents( "./request.txt", $content ); // ファイル出力
// レスポンスパラメータ保存
file_put_contents( "./response.txt", $response ); // ファイル出力
return $response;
}
코드 해설
이전에 소개한 Chrome 확장 도구를 사용하면 서버와 통신 할 수 있지만,
일부러 클라이언트를 자작하는 의미가 있는가? 라고 의문으로 생각되는 분도 있을지도 모르기 때문에 조금 메리트에 대해서 기재합니다.
1.API 연속 실행
PHP를 사용하면 API를 연속적으로 실행할 수 있습니다.
이에 따라 예를 들어 서버의 부하 시험(1분간에 60회 이상 통신하는 등) 등을 쉽게 시험 가능하게 됩니다.
2. 다중 API 실행
1.과 비슷하지만, 데이터 삭제를 하는 API, 데이터 작성을 하는 API가 각각 있었다고 해서,
1회의 스크립트 실행으로 「데이터 삭제→데이터 작성」의 API를 연속으로 실행하면 편하게 데이터 작성을 실시한 환경이 구축 가능하게 됩니다.
개인적으로는 연속 실행할 수 있는 것이 제일의 장점은 아닐까 생각합니다.
클라이언트 작성
이제 클라이언트를 만들어 보겠습니다.
작성 장소는 전회와 같이 「c:\xampp\htdocs\api」폴더가 됩니다.
api 폴더에 client.php 파일을 만듭니다.
내용은 다음과 같습니다.
client.php//------------------------------------------------------
// client.php API送信クライアント
//
// 実行コマンド
// cd C:\xampp\htdocs\api\
// php client.php テスト
//------------------------------------------------------
// 引数チェック
if( count($argv) < 2 ){
echo "エラー:引数が足りません\n";
echo "EX:\n";
echo "php client.php テスト\n";
exit;
}
$param = $argv[1];
$url = "http://localhost/api/server.php"; // 接続先URL
echo "-----[api start]-----\n";
$ret = sendApi( $url, $param );
echo "-----[api end]-----\n";
// API実行
function sendApi( $url, $param ) {
// プロキシ情報
$proxy_host = "proxy_ipaddress";
$proxy_port = "port_no";
$proxy_user = "username";
$proxy_pass = "password";
$proxy_auth = base64_encode("$proxy_user:$proxy_pass");
// パラメータ設定
$content = "name=".$param."";
$content = mb_convert_encoding( $content, "UTF-8", "auto" );
// ヘッダデータ作成
$header = array(
"Content-Type: application/x-www-form-urlencoded;",
"Content-Length: ".strlen($content),
// "Proxy-Authorization: Basic ".$proxy_auth
);
$contextOptions = array(
"http" => array(
"protocol_version" => 1.1,
"method" => "POST",
"header" => implode( "\r\n", $header ),
"ignore_errors" => true,
// "proxy" => "tcp://$proxy_host:$proxy_port",
"request_fulluri" => true,
"content" => $content
)
);
$sslContext = stream_context_create( $contextOptions );
// API実行
$response = file_get_contents( $url, false, $sslContext );
// リクエストパラメータ保存
file_put_contents( "./request.txt", $content ); // ファイル出力
// レスポンスパラメータ保存
file_put_contents( "./response.txt", $response ); // ファイル出力
return $response;
}
코드 해설
//------------------------------------------------------
// client.php API送信クライアント
//
// 実行コマンド
// cd C:\xampp\htdocs\api\
// php client.php テスト
//------------------------------------------------------
// 引数チェック
if( count($argv) < 2 ){
echo "エラー:引数が足りません\n";
echo "EX:\n";
echo "php client.php テスト\n";
exit;
}
$param = $argv[1];
$url = "http://localhost/api/server.php"; // 接続先URL
echo "-----[api start]-----\n";
$ret = sendApi( $url, $param );
echo "-----[api end]-----\n";
// API実行
function sendApi( $url, $param ) {
// プロキシ情報
$proxy_host = "proxy_ipaddress";
$proxy_port = "port_no";
$proxy_user = "username";
$proxy_pass = "password";
$proxy_auth = base64_encode("$proxy_user:$proxy_pass");
// パラメータ設定
$content = "name=".$param."";
$content = mb_convert_encoding( $content, "UTF-8", "auto" );
// ヘッダデータ作成
$header = array(
"Content-Type: application/x-www-form-urlencoded;",
"Content-Length: ".strlen($content),
// "Proxy-Authorization: Basic ".$proxy_auth
);
$contextOptions = array(
"http" => array(
"protocol_version" => 1.1,
"method" => "POST",
"header" => implode( "\r\n", $header ),
"ignore_errors" => true,
// "proxy" => "tcp://$proxy_host:$proxy_port",
"request_fulluri" => true,
"content" => $content
)
);
$sslContext = stream_context_create( $contextOptions );
// API実行
$response = file_get_contents( $url, false, $sslContext );
// リクエストパラメータ保存
file_put_contents( "./request.txt", $content ); // ファイル出力
// レスポンスパラメータ保存
file_put_contents( "./response.txt", $response ); // ファイル出力
return $response;
}
클라이언트 동작 확인
이제 클라이언트를 실행해 보겠습니다.
api 폴더에서 명령 프롬프트를 시작하고 다음을 입력합니다.
php client.php PHP 클라이언트에서 전송!
API 실행에 성공하면 다음과 같이 표시됩니다.
서버 동작 확인
계속해서 서버측의 확인을 실시합니다.
「api」폴더에 액세스 해, 이하의 3 파일이 작성되고 있으면 성공입니다.
[request.txt]
[response.txt]
[서버 측에서 작성된 실행 날짜의 텍스트 파일]
각각의 파일의 내용이 상기와 같이 되어 있으면 API 실행이 성공하고 있습니다.
마지막으로
이번 툴을 사용하면 간단하게 API 송수신의 테스트를 실행할 수 있을까 생각합니다.
부디 활용해 보세요.
Reference
이 문제에 관하여(【PHP】API 실행 툴을 만들어 보자(그 2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/noji505/items/ea76327521e8fc1a4f88
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
계속해서 서버측의 확인을 실시합니다.
「api」폴더에 액세스 해, 이하의 3 파일이 작성되고 있으면 성공입니다.
[request.txt]
[response.txt]
[서버 측에서 작성된 실행 날짜의 텍스트 파일]
각각의 파일의 내용이 상기와 같이 되어 있으면 API 실행이 성공하고 있습니다.
마지막으로
이번 툴을 사용하면 간단하게 API 송수신의 테스트를 실행할 수 있을까 생각합니다.
부디 활용해 보세요.
Reference
이 문제에 관하여(【PHP】API 실행 툴을 만들어 보자(그 2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/noji505/items/ea76327521e8fc1a4f88
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【PHP】API 실행 툴을 만들어 보자(그 2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/noji505/items/ea76327521e8fc1a4f88텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)