【PHP】API 실행 툴을 만들어 보자(그 2)

9685 단어 PHPapi

소개



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;
}

코드 해설


  • 11~17행·· 실행시에 인수가 지정되어 있는지 체크하고 있습니다.
  • 28 행 · · API 실행을 실시하는 메소드입니다.
  • 31~36행째··외부 접속시에 프록시 접속이 필요한 경우의 설정입니다, 만약 필요하면 재작성해 주세요.
  • 46, 55행··· 상기의 프록시 접속이 필요한 경우에 한해, 코멘트 아웃을 해제해 주세요.
  • 63 행 · · API를 실행하고 있습니다.
  • 65~69행·· 송신한 리퀘스트 파라미터와 수신한 응답을, 텍스트 파일에 보존하고 있습니다.

  • 클라이언트 동작 확인



    이제 클라이언트를 실행해 보겠습니다.
    api 폴더에서 명령 프롬프트를 시작하고 다음을 입력합니다.
    php client.php PHP 클라이언트에서 전송!


    API 실행에 성공하면 다음과 같이 표시됩니다.


    서버 동작 확인



    계속해서 서버측의 확인을 실시합니다.
    「api」폴더에 액세스 해, 이하의 3 파일이 작성되고 있으면 성공입니다.


    [request.txt]


    [response.txt]


    [서버 측에서 작성된 실행 날짜의 텍스트 파일]


    각각의 파일의 내용이 상기와 같이 되어 있으면 API 실행이 성공하고 있습니다.

    마지막으로



    이번 툴을 사용하면 간단하게 API 송수신의 테스트를 실행할 수 있을까 생각합니다.
    부디 활용해 보세요.

    좋은 웹페이지 즐겨찾기