외부 API를 호출하여 BTC 가격 얻기

소개



Laravel에서 HTTP 요청을 던지기 위해 Guzzle를 사용했습니다.
Guzzle의 공부로서 이번에는 BTC의 가격을 얻을 때까지 기사로하고 있습니다.

전제



이미 프로젝트가 만들어졌습니다.
※ 아직 작성되지 않은 분은 여기 을 참고로 하면 좋을까 생각합니다.

Guzzle 설치


composer require guzzlehttp/guzzle

제대로 설치되어 있으면 composer.json에 다음이 추가되었습니다.
"require": {
        //略
        "guzzlehttp/guzzle": "^7.2", //数値はインストールしたバージョンによって変わります
        //略
    }

외부 API 호출



이번에는 3개의 거래소 'bitflyer, Zaif, coincheck'에서 API를 호출하여 BTC의 가격을 취득하고 있습니다.

컨트롤러



BitcoinController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use GuzzleHttp\Client;

class BitcoinController extends Controller
{
    public function index()
    {
        $client = new Client();
        $method = "GET";
        $data = []; // 各取引所で取得したデータを格納する

        # bitflyerで取得
        $url = "https://api.bitflyer.jp/v1/ticker?product_code=BTC_JPY";
        $response = $client->request("GET", $url);
        $posts = $response->getBody();
        $posts = json_decode($posts, true);
        $data['bitflyer'] = $posts;

        # Zaifで取得
        $url = "https://api.zaif.jp/api/1/ticker/btc_jpy";
        $response = $client->request("GET", $url);
        $posts = $response->getBody();
        $posts = json_decode($posts, true);
        $data['Zaif'] = $posts;

        # coincheckで取得
        $url = "https://coincheck.com/api/ticker";
        $response = $client->request("GET", $url);
        $posts = $response->getBody();
        $posts = json_decode($posts, true);
        $data['coincheck'] = $posts;

        return view('bitcoin.index', compact('data'));
    }
}

소스 코드를 간략하게 설명합니다.
우선, API에 대해서 GET 메소드로 HTTP 통신을 선언.
$client = new Client();
$response = $client->request("GET", [アクセスしたいURL]);

다음으로, API의 반환값에 대해서, getBody() 메소드를 사용해 메세지의 본문을 취득합니다. 또한 API로 얻은 데이터는 JSON 형식이므로 json_decode() 함수를 이용하여 JSON 문자열을 배열로 변환합니다.
$posts = $response->getBody();
$posts = json_decode($posts, true);

API의 반환값을 포함한 $data 의 내용은 아래와 같습니다.


route



web.php
<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', 'BitcoinController@index');


보기



index.blade.php
<div class="container">
  <table border="1">
    <tbody>
      <tr>
        <th>bitflyer</th>
        <th>Zaif</th>
        <th>coincheck</th>
      </tr>
      <tr>
        <td>¥{{ number_format($data['bitflyer']['ltp']) }}</td>
        <td>¥{{ number_format($data['Zaif']['last']) }}</td>
        <td>¥{{ number_format($data['coincheck']['last']) }}</td>
      </tr>
    </tbody>
  </table>
</div>

화면 표시되는 것은 아래와 같습니다.


참고



Laravel & Guzzle] API 호출 방법을 알기 쉽게 해설
비트 코인 가격을 API로 얻어 보았습니다.

좋은 웹페이지 즐겨찾기