【初心者向け】Zaif API×Pythonでプチフィンテック10 HTTPリクエストの概要

前回の記事では、現物取引APIを利用するプログラムを実行してみて、実際に利用できることを確認しました。

今回と次回の2回で、実行したプログラム内でどのような処理が行われているのか解説していきたいと思います。

まず今回は、処理を理解するための前提となるHTTPリクエストと呼ばれるものの概要について説明します。

<スポンサーリンク>

HTTPリクエストの概要

そもそもHTTPリクエストとは?

さて、これまで作成してきたPythonプログラムでは、API経由でZaifサーバにアクセスするために、「requests」というモジュールを利用してきました。

例えば以前、公開取引APIを利用する際には、以下のようなコードを記述しました。

response = requests.get('https://api.zaif.jp/api/1/last_price/' + CURRENCY_PAIR)

少しこのコードについて説明すると、これはサーバに対して、「HTTPプロトコル」の「GET」というメソッドにより、サーバに価格情報の提供をお願いしています。

この「お願い」のことを「HTTPリクエスト」と呼びます。「HTTP」プロトコルを用いてサーバに処理を「リクエスト」しているわけですから、言葉通りの意味ですね。

APIを利用する際には、この「HTTPリクエスト」という方法によりサーバにアクセスしている点を押さえておいて下さい。

HTTPリクエストの構成

このHTTPリクエストがプログラムからサーバに対して行われる際には、リクエスト内容がHTTPプロトコルに則った形式に変換されてサーバへ届けられます。

その形式ですが、以下3つのブロックから構成されています。

1.HTTPリクエストライン

後に説明する、リクエスト方法(GETやPOSTなど)、アクセス対象のファイル、使用するHTTPのバージョンが含まれます。

2.HTTPリクエストヘッダ

アクセス先のURLや、使用しているブラウザなどの情報が含まれます。

3.HTTPリクエストメッセージボディ

サーバに(APIキーなどの)情報を送る場合、その情報が含まれます。ただし、後に説明する「POST」メソッドではこのボディ部が生成されますが、「GET」メソッドでは生成されません。「GET」メソッドでは、1.HTTPリクエストラインと2.HTTPリクエストヘッダのみからHTTPリクエストが構成され、サーバに情報を送る場合は、その内容が2.HTTPリクエストヘッダに含まれることになります。

参考まで、当ブログトップページにアクセスする際のHTTPリクエストは以下の通りです。

GET /index.php HTTP/1.1 ⇒ HTTPリクエストライン
Host: www.closetoyou.jp ⇒ HTTPリクエストヘッダ
User-Agent: curl/7.47.0 ⇒ HTTPリクエストヘッダ

ご覧の通り、GETメソッドでアクセスしていますが、HTTPリクエストメッセージボディは存在していません。

さて、少々内容が複雑でしたが、ここでは最低限、HTTPリクエストが大きく3つのブロックから構成されることを押さえておいて頂ければと思います。

HTTPリクエストメソッドの種類

このHTTPリクエストメソッドですが、複数の種類があります。代表的(かつ、本シリーズで利用するもの)は「GET」と「POST」の2種類です。

簡単に違いを説明します。

種類 サーバへの情報の送り方 対応するZaif API
GET HTTPリクエストヘッダに含める 現物公開API
POST HTTPリクエストメッセージボディに含める 現物取引API

ここでは、現物公開APIには「GET」メソッドを、現物取引APIには「POST」メソッドを用いる必要があるという点を押さえておいて下さい。

ここで、本記事の冒頭に掲載した現物公開APIを利用するためのコードを改めて見てみて下さい。

response = requests.get('https://api.zaif.jp/api/1/last_price/' + CURRENCY_PAIR)

「requests」の後に「get」と記載されており、「GET」メソッドが使われていることが分かります。

一方、前回掲載した現物取引APIを利用するためのサンプルコードの、該当する箇所を見てみましょう。

response = requests.post('https://api.zaif.jp/tapi', data=encoded_params, headers=headers)

こちらは「requests」の後に「post」と記載されていることから、「POST」メソッドが使われていることがお判りになるかと思います。

また、よく見てみますと、postメソッドのカッコ内に、「data=」と「headers=」という記述が含まれていますね。

これらはそれぞれ、HTTPリクエストメッセージボディとHTTPリクエストヘッダに該当します。このように、現物取引APIを利用する際には、HTTPリクエストにメッセージボディとヘッダを指定する必要があります

終わりに

今回の記事では、現物取引APIの利用方法を理解する際に前提となる、HTTPリクエストの基礎について紹介しました。

次回の記事では今回紹介した内容も踏まえ、現物取引API利用の流れを説明したいと思います。

カテゴリ:フィンテック
<スポンサーリンク>

シェアする

フォローする