Macにswagger-codegenをインストールする
注意:brew install swagger-codegenだと、3系のswagger-codegenがインストールされますが、 そいつが生成するPHPコードは壊れてます。よって、2系をお使いください。
brew cask install homebrew/cask-versions/java8 brew install swagger-codegen@2
シムリンクを貼る
cd /usr/local/bin ln -s /usr/local/Cellar/swagger-codegen@2/2.4.1/bin/swagger-codegen swagger-codegen
ymlファイルからコードを生成する
swagger-codegen generate -i hoge.yml -l php -o /tmp/test
これで/tmp/test
に生成されたコードが出力されます
composer.jsonの更新
CakePHP3のcomposer.jsonを更新します。 "require"はこんな感じ:
"require": { "php": ">=5.6", "cakephp/cakephp": "3.5.*", "mobiledetect/mobiledetectlib": "2.*", "cakephp/migrations": "~1.0", "cakephp/plugin-installer": "~1.0", "josegonzalez/dotenv": "2.*", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", "guzzlehttp/guzzle": "^6.2" },
"autoload"はこんな感じ:
"autoload": { "psr-4": { "App\\": "src", "Swagger\\Client\\": "lib/" } },
終わったらupdateします:
composer update
libフォルダを設置
/tmp/test/Swagger-Client-php/libを、CAKE_ROOTにコピーします
クライアントコードを呼び出す
$authorization = "Bearer xxxxxxxxxxxxxxxxxxxxxx"; $hogeApi = new \Swagger\Client\Api\HogeApi(); $hoge = $hogeApi->hogeGet($authorization); $this->log(print_r($hoge,true),LOG_DEBUG);
SSLのエラーが出る場合
APIサーバのSSL証明書がオレオレだとこのエラーが出ます:
[0] cURL error 60: Peer's Certificate issuer is not recognized. (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) Swagger\Client\ApiException
対策ですが、Api/HogeApi.phpを次のように編集しましょう:
$this->client = $client ?: new Client(['verify' => false]);