コンテンツにスキップ

Python と API: API 駆動型アプリを構築するための Python リクエストの使用方法

やあ! Python スキルをレベルアップし、強力な API をアプリケーションに統合する方法を学びたいと考えていますか?それなら、このガイドはあなたのためのものです。

素晴らしい Python Requests ライブラリを使用して、あらゆる種類の Web API と対話する手順を説明します。 Python の基本的な知識とリクエストがあれば、次のことができるようになります。

  • 任意の API エンドポイントからデータをクエリする
  • Twitter、Stripe、Twilio などの人気サービスと統合するアプリを構築します。
  • API を接続してワークフローを自動化する
  • 大量の有用なデータと機能を利用して Python アプリを強化します

刺激的ですね?飛び込んでみましょう!

Python で API を使用する理由

コードに入る前に、まず理解しましょう なぜ API への接続は開発者にとって非常に便利です。

API を使用すると、さまざまなソフトウェア アプリケーションが相互に通信できるようになります。企業や組織は、開発者が自社のサービスを使用してアプリをより簡単に構築できるように API を公開しています。

コードで API を使用する主な理由は次のとおりです。

  • 時間節約 – API としてすでに存在するものを最初から再構築しないでください。
  • データを活用する – 天気、株式、ソーシャルメディアなどの便利なデータソースにアクセスします。
  • 機能を拡張する – 地図、支払い、通知などを統合します。
  • ワークフローを自動化する – 異なるシステムをシームレスに接続します。
  • アプリをより速く構築する – 基盤となるインフラストラクチャではなく、アプリのロジックに焦点を当てます。

つまり、適切に設計された API は、より優れたアプリケーションをより迅速に開発するのに役立ちます。

による Postman の 2024 年の API レポート、パブリック API の採用は急速に増加しています。

  • 組織の 72% がコア ビジネスの一部としてパブリック API を利用しています。
  • 58% はパブリック API 自体を持っています。
  • レスポンダーの API リクエストは、650 年から 2020 年にかけて 2021% 以上増加しました。

API が業界全体でますます普及しているため、Python を使用して API に接続するためのスキルをレベルアップする絶好の機会です。

Python リクエストの入門

Python には、API の操作を簡単にする素晴らしいライブラリがあります。最も人気のあるものは、 つながり申請.

リクエストを使用すると、わずか数行のコードで API を呼び出すことができます。

import requests

response = requests.get(‘https://api.data.gov/education‘)

Python の組み込みなどの下位レベルの代替手段との比較 urllib モジュールのリクエストを使用すると、時間と頭痛の種を大幅に節約できます。

リクエストの主な機能は次のとおりです。

  • シンプルでエレガントな API
  • HTTPリクエストを非常に簡単にします
  • 組み込みのJSONサポート
  • ヘッダー、パラメーター、認証の処理
  • ネットワークエラー時の自動再試行
  • 幅広い高度な機能

Requests をインストールするには、次のコマンドを実行するだけです。

pip install requests

その後 import requests コードに追加すると、API 呼び出しを開始する準備が整いました。

いくつかの簡単な例を見てみましょう。

GETリクエストを行う

最も一般的な API 呼び出しは、エンドポイントからデータを取得する GET リクエストです。

Requests を使用して GET リクエストを作成する方法は次のとおりです。

import requests 

response = requests.get(‘https://api.github.com/repos/requests/requests‘)

これにより、GitHub API エンドポイントに GET リクエストが送信され、Requests リポジトリ上のデータが取得されます。

戻ってきます Response ステータス コード、応答ヘッダー、およびデータを含むオブジェクト。

応答ステータス コードを出力するには:

print(response.status_code)

>>> 200

ステータス コード 200 は、リクエストが成功したことを示します。エラーや失敗を示すステータス コードは他にも多数存在します。それらの処理方法については後ほど説明します。

応答データにアクセスするには、単に呼び出します .json():

data = response.json()

print(data[‘stargazers_count‘])

>>> 64245

データは自動的に JSON として解析されます。これにより、JSON API の操作が非常に簡単になります。

パラメータの受け渡し

多くの API では、データのフィルター処理や結果のページ分割などを行うためにパラメーターを渡す必要があります。

パラメータを辞書として渡します。 params 引数:

params = {‘type‘: ‘owner‘, ‘sort‘: ‘updated‘}
response = requests.get(‘https://api.github.com/repos/kennethreitz/requests‘, 
                        params=params)

リクエストはパラメータをエンコードし、URL に追加します。

URL でパラメータを直接渡すこともできます。

response = requests.get(‘https://api.github.com/repos/kennethreitz/requests?type=owner&sort=updated‘)

どちらの方法でも機能しますが、辞書を渡す方がよりクリーンであると考えられます。

POST リクエスト

サーバー上にリソースを作成するには、POST リクエストを使用します。

辞書として投稿するデータを json パラメータ を使用します。

data = {‘name‘: ‘John Smith‘, ‘email‘: ‘[email protected]‘}
response = requests.post(‘https://api.example.com/users‘, json=data)

これにより、データが JSON としてエンコードされ、API に POST が送信されて、新しいユーザー リソースが作成されます。

POST の場合は、返されたステータス コードも検証する必要があります。

if response.status_code == 201:
  print(‘User created!‘)

201 ステータスは、リソースがサーバー上に正常に作成されたことを意味します。

パット、パッチ、削除

GET と POST 以外の一般的な HTTP メソッドは次のとおりです。

  • PUT – 既存のリソースを更新する
  • PATCH – リソースの部分更新
  • DELETE – リソースを削除する

これらは同様に機能します。対応するメソッドを呼び出すだけです。 requests:

# PUT - Update user
requests.put(‘https://api.example.com/users/123‘, json=updated_data) 

# PATCH - Partial update  
requests.patch(‘https://api.example.com/users/123‘, json=partial_data)

# DELETE - Delete user
requests.delete(‘https://api.example.com/users/123‘)

これで、すべての一般的な HTTP メソッドを使用して API 呼び出しを行う方法がわかりました。

API 応答の処理

API を使用する場合は、サーバーから返されたステータス コードに基づいて応答データを処理する必要があります。

API は、標準の HTTP ステータス コードを使用して、成功、エラー、または失敗を示します。一般的なものには次のようなものがあります。

  • 200 – OK – リクエストは成功しました
  • 201 – 作成されました – リソースは正常に作成されました
  • 400 – 不正なリクエスト – リクエストの形式が間違っているか、データが欠落しています。
  • 401 – 権限がありません – 認証が必要です
  • 403 – 禁止 – このリソースへのアクセス権がありません
  • 404 – 見つかりません – リソースが存在しません
  • 500 – サーバーエラー – サーバーで予期しないエラーが発生しました

Response オブジェクトのステータス コードを確認します。

response = requests.get(‘https://api.example.com/items/123‘)

if response.status_code == 200:
  # Success!
elif response.status_code == 404:
  # Notify user item does not exist

簡潔にするために、すべてのリクエスト呼び出しを次のようなヘルパー関数でラップすることをお勧めします。

def make_api_request(endpoint):
  response = requests.get(endpoint)

  response.raise_for_status()

  return response.json()

これにより、コードがクリーンになるだけでなく、エラー処理が 1 か所に集中化されます。

raise_for_status() 500 や 404 などの HTTP エラー コードがある場合は例外が発生するため、毎回手動で確認する手間が省けます。

API による認証

多くの API では、アクセスを制限するために認証が必要です。 API 認証の一般的な形式には次のものがあります。

  • APIキー – リクエストヘッダーまたはパラメータを介して一意の API キーを渡します
  • 基本認証 – リクエストでユーザー名とパスワードを渡します
  • 無記名トークン – 認証プロバイダーから OAuth 2.0 ベアラー トークンを送信します。
  • ダイジェスト認証 – 基本認証と似ていますが、資格情報は暗号化されます

リクエストを使用すると、認証の処理が簡単になります。

API キーを使用するには、それをヘッダーとして渡します。

headers = {‘Authorization‘: ‘Bearer YOUR_API_KEY‘}
response = requests.get(‘https://api.example.com‘, headers=headers)

基本認証の場合は、ユーザー名とパスワードをタプルとして指定します。

requests.get(‘https://api.example.com‘, 
            auth=(‘username‘, ‘password‘))

リクエストは資格情報のエンコードを正しく処理します。

Facebook、Twitter、Google などの OAuth プロバイダーからのベアラー トークンの場合:

params = {‘access_token‘: ‘OAUTH_TOKEN‘}
requests.get(‘https://api.example.com‘, params=params)  

アクセス トークンをパラメータとして渡すと、リクエストが残りを処理します。

Python アプリやワークフローの API に安全にアクセスするには、適切な認証が重要です。

API を使用するためのベスト プラクティス

今あなたが知っている Python で API を呼び出すために、API を効果的に操作するためのベスト プラクティスについて説明します。

エラーを適切に処理する

API は、サーバーがダウンしたり、ネットワークが切断されたり、プロバイダーが変更されたりするなど、予期しない形で失敗する可能性があります。

API リクエストを行う場合:

  • Try/Except ブロックを使用する エラーをキャッチする
  • 次のような一般的な例外を処理します ConnectionErrors
  • ステータス コードを確認し、200 以外の応答を処理する
  • 指数バックオフ戦略を使用して、失敗したリクエストを再試行します

これにより、API が失敗したときにアプリケーションが適切に機能低下することが保証されます。

レート制限の尊重

悪用を防ぐために、API は 1 時間/日あたりのリクエストのレート制限を適用します。

これらの制限を超えると、アクセスが永久にブロックされる可能性があります。

これを回避するには:

  • レート制限に関するドキュメントを確認する そして自分のノルマを理解する
  • リクエストを制限する – 必要な場合にのみ電話をかける
  • バックオフタイマーを実装する 制限に達した場合は、再試行する前に一時停止します
  • API をスパムしたり悪用したりしないでください。 これはブロックにつながります。

レート制限により API が保護され、すべてのユーザーが機能できるようになります。使用にあたってはそれらを尊重してください。

応答をキャッシュする

接続によっては API が遅くなる場合があります。パフォーマンスを考慮して、特にデータが頻繁に変更されない場合は、応答をキャッシュすることを検討してください。

一般的な Python キャッシュ ライブラリには、Redis、Memcached、SQLAlchemy などがあります。

キャッシュにより、リクエストが繰り返される場合の不必要なネットワーク呼び出しが回避されます。

Python API の例と使用法

ここで、人気のある API の実例と、Python でそれらにアクセスする方法を見てみましょう。

Twitter API

Twitter API を使用すると、ツイート、ユーザー、ハッシュタグ、分析をクエリできます。 API 認証情報を取得するには、Twitter 開発者アカウントを申請する必要があります。

インストール トゥイーピー よりフレンドリーな Twitter API インターフェイス用のライブラリ:

pip install tweepy

ハッシュタグのツイートを取得する例:

import tweepy

client = tweepy.Client(bearer_token=TWITTER_TOKEN)

tweets = client.search_recent_tweets(query="#python")

for tweet in tweets.data:
   print(tweet.text)

ジョブの設定方法については、 トゥイーピードキュメント のガイドをご参照ください。

GitHub API

GitHub API を使用すると、認証なしで GitHub リポジトリ、コード、ユーザーなどにプログラムでアクセスできます。

ユーザーのリポジトリを取得する例:

import requests

response = requests.get(‘https://api.github.com/users/kennethreitz/repos‘)

for repo in response.json():
  print(repo[‘name‘]) 

ジョブの設定方法については、 GitHub API ドキュメント より多くのユースケースに対応します。

ストライプ API

Stripe API を使用すると、アプリや Web サイトに支払いを組み込むことができます。

インストール ストライプ ライブラリとインポート:

pip install stripe

import stripe

料金の作成例:

stripe.api_key = ‘STRIPE_SECRET_KEY‘ 

charge = stripe.Charge.create(
  amount=1000,
  currency=‘usd‘,
  source=‘tok_visa‘ # Token from Stripe.js
)

Stripe は、面倒な支払い作業をお客様に代わって処理します。

見る Stripe の API ドキュメント 完全な API リファレンスについては、こちらをご覧ください。

Slack、Twilio、Google Maps、AWS など、他にも素晴らしい API がたくさんあります。重要なのは、アプリケーションに適切なデータ ソースを見つけて API の力を活用することです。

まとめ

このガイドが、Requests ライブラリを使用して Python で API リクエストを作成する方法の概要を説明するのに役立つことを願っています。以下に重要なポイントをいくつか示します。

  • つながり申請 API の呼び出しが簡単になります – pip を使用してインストールします
  • CRUD 操作には GET、POST、PUT、DELETE などの一般的な HTTP メソッドを使用します。
  • パラメータ、認証、ヘッダー、データを簡単に渡す
  • ステータスコードとエラーを適切に処理する
  • レート制限やキャッシュなどのベスト プラクティスを実装する
  • Twitter、GitHub、Stripe などのクールな API を統合します。

API を使用すると、既存のデータとサービスを活用できるため、より優れたアプリをより迅速に構築できます。 Python とリクエストは、コード内で API の力を活用する優れた方法を提供します。

次のステップについては、公式を参照することをお勧めします ドキュメントをリクエストする、統合したいサービスの API ドキュメントを読み、次のような Python API を使用するいくつかのリポジトリを確認します。 この1.

このガイドがお役に立てば幸いです。 Python と API の使用に関して他にご質問がある場合は、お知らせください。コーディングを楽しんでください!

参加する

あなたのメールアドレスは公開されません。 必須フィールドは、マークされています *