PythonでAPIを使いこなす|リクエストからAPI構築まで

Python

(最終更新月:2022年9月)

✔このような方へ向けて書かれた記事となります

「APIってなに?」

「PythonでAPIサービスを使うにはどうすればいいの?」

「APIサービスを使う実例が見たい!」

✔当記事を通じてお伝えすること

  • APIとは?Web APIとは?
  • PythonをつかったAPIサーバーへのリクエスト・レスポンス
  • PythonでAPIを構築するには?

当記事ではAPIがどんなものかがわかるのはもちろん、どうすればAPIを使えるのかが具体例とともにわかります

ぜひ最後までご覧ください。

✔当記事の信頼性

当ブログではPythonをベースとしたフレームワーク「Django」の使い方を詳しく解説しています。

その中で自作したアプリを公開しています。

実際に自前で構築したAPIサービスとJavaScriptフレームワーク「React」をつかっているものになります。

Fun Tools
ReactとDjangoで作成したWebアプリです。便利なツールを揃えているので、ぜひ立ち寄ってみてください。作り方はブログで紹介しています!

icon
icon

APIとは?

APIとは、Application Programming Interfaceの略称で、プログラムを共有する仕組みのことをいいます。

当記事ではAPIの中でも、使用する言語に縛りがないWeb APIについて解説をしていきます。

Web APIについて理解を深めるために以下をお伝えします。

  • APIの仕組み
  • リクエスト・レスポンスについて
  • APIサービス事例

ひとつずつ見ていきましょう。

Web APIの仕組み

Web APIの仕組みは、ユーザーはAPIプログラムのサーバーへリクエストをし、プログラム機能の結果をレスポンスとして受け取る、というものです。

図解すると以下のようになります。

Web APIでは、言語に縛られない「HTTP/HTTPS」による通信方法を採用しています。

HTTPもしくはHTTPSを使うことで、プログラミング言語に縛られず、好きな言語でリクエスト・レスポンスのやり取りができるようになります。

リクエスト・レスポンスってなに?

そもそもリクエスト・レスポンスとは何でしょうか?

簡単にいえば以下のように例えられます。

  • リクエストは、「注文」
  • レスポンスは、「注文された品物」

つまりこのやり取りを手伝うサーバーは、レストランのウェイターのような役割をしているといえます。

詳しくはこちらの記事で解説しています。

APIサービス事例一覧を紹介

Web APIを提供している有名なサービスは以下のとおりです。

  • Twitter
  • Coincheck
  • Chatwork
  • Slack
  • LINE

たとえばTwitterのAPIサービスでは、以下のようなことが可能です。

  • ツイートの投稿
  • ツイートの取得
  • ツイートの検索
  • ユーザーの検索
  • フォローやいいね

Twitterでできるさまざまなことをプログラミング言語で実行できるようになります。

PythonでAPIにリクエストする方法

こちらではPythonでAPIサーバーにリクエストをする方法を説明します。

以下のページに簡単なAPIサービスを作ってみました。

「first_number」「second_number」と2つの数値を受けとり、足し算の解をレスポンスとして返すAPIです。

以下の手順でリクエストからレスポンスまで解説していきます。

  • モジュールのインポート
  • APIエンドポイントの設定
  • ヘッダーの設定
  • 受け渡すデータを記述
  • リクエストを投げる
  • レスポンスを受け取ったあとの処理

モジュールのインポート

必要なモジュールは2つだけ。

以下のとおりインポートしましょう。

>>> import requests, json

APIエンドポイントの設定

APIサービスのエンドポイント(URL)を格納しておきます。

誰でも使える簡単なAPIなのでこのままぜひ試してみてください。

>>> ep = "https://api.itc-app.site/api-practice/plus/"

ヘッダーの設定

ヘッダーで送信するデータの型などを指定します。

>>> headers = {"Content-Type": "application/json"}

使用するサービスによっては、トークンキーなどをヘッダーに組み込みます。

受け渡すデータを記述「jsonモジュール」

jsonモジュールをつかって、データをJSON型に書き換えます。

>>> data = {"first_number":5, "second_number": 10}
>>> json_data = json.dumps(data)

またこちらのAPIでは、「first_number」「second_number」の2つ以外はエラーとなりますので、注意してください。

リクエストを投げる「requestsモジュール」

requestsモジュールのPOSTメソッドをつかって、リクエストし、レスポンスを受け取ります。

>>> res = requests.post(ep, data=json_data, headers=headers)

requests.postメソッドは、以下のとおりの構成です。

request.post(APIサービスのURL、JSON型のデータ、ヘッダー)

「res」にはレスポンスが入ります。

レスポンスを受け取ったあとの処理

レスポンスの中身を見てみましょう。

>>> print(res)
<Response [200]>
>>> print(res.text)
'{"answer":15}'
>>> print(type(res.text))
<class 'str'>

レスポンスをprintすると、ステータスが表示されます。

200は正しくレスポンスを受け取ったことを意味します。

text属性に実際のレスポンスが格納されています。

ただし、res.textのままでは全体が文字列なので、辞書型に戻しておくほうがよいでしょう。

>>> res_json = json.loads(res.text)
>>> res_json
{'answer': 15}
>>> type(res_json)
<class 'dict'>
>>> res_json.get("answer")
15

実際のAPIサービスで試したい方はTwitterなどで試してください。

Python API構築の方法

前章でも作成したAPIの構築方法を解説していきます。

実際の構築はPythonのフレームワーク「Django」をつかっています。

以下のとおり順を追って解説します。

  • Django REST Frameworkとは
  • コードサンプル

Django REST Frameworkとは

Django REST Frameworkとは、DjangoWeb APIを構築するためのライブラリです。

一般のWebアプリ作成のDjangoとは違い、ReactやVueなどの別言語フロントエンドフレームワークと組み合わせられるのがポイントです。

始めてみたい方はこちらの記事も合わせてご覧ください。

コードサンプル

こちらでは以下APIのコードを公開します。

詳しいurls.pyなどについては割愛してますが、API構築に必要なパートはこちらで充分でしょう。

https://api.itc-app.site/api-practice/plus/

views.py

from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import status

from tools.api.serializers import ApiPracticeSerializer

class ApiPracticeView(APIView):
    def post(self, request, format=None):
        data = request.data
        serializer = ApiPracticeSerializer(data=data)
        if serializer.is_valid():
            valid_data = serializer.data
            first_one = valid_data.get("first_number")
            second_one = valid_data.get("second_number")
            return Response({"answer":first_one + second_one})

serializers.py

from rest_framework import serializers

from django.core.validators import MaxValueValidator, MinValueValidator

class ApiPracticeSerializer(serializers.Serializer):
    first_number = serializers.IntegerField(validators=[MaxValueValidator(50), MinValueValidator(1)])
    second_number = serializers.IntegerField(validators=[MaxValueValidator(50), MinValueValidator(1)])

まとめ:Pythonを使えばAPIの利用や構築は簡単

当記事の内容をまとめます。

  • APIとは、別プログラムからでも機能を使えるようにする仕組み
  • APIのリクエストには、requests、jsonモジュールが必要
  • Django REST Frameworkを使えば簡単にAPI構築ができる

PythonでAPIにアクセスできるようになるとさまざまなアプリケーションが作れるようになります。

以下はTwitterのAPIを利用したアプリケーションです。

Fun Tools
ReactとDjangoで作成したWebアプリです。便利なツールを揃えているので、ぜひ立ち寄ってみてください。作り方はブログで紹介しています!

当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています

「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」

という方は必見です!

【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

タイトルとURLをコピーしました