Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Python

PythonでAPI呼び出す時のヘッダー、ボディの指定方法について

投稿日:2023年4月2日 更新日:

 

<目次>

(1) PythonでAPI呼び出す時のヘッダー、ボディの指定方法について
 (1-1) 記事の概要
 (1-2) ①「ヘッダー」の指定方法
 (1-3) ②「ボディ」の指定方法
 (1-4) ③「認証情報」の指定方法
 (1-5) ④「パラメータ」の指定方法
 (1-6) サンプルプログラム

(1) PythonでAPI呼び出す時のヘッダー、ボディの指定方法について

(1-1) 記事の概要

PythonでHTTPリクエストを送る際の「ヘッダー」や「ボディ」や「認証情報」の指定の仕方について、サンプルプログラムも用いて紹介します。
・今回の内容は全般的にPythonのrequestsライブラリを使用する前提で記載しています。
・未インストールの方は、ターミナルを開いて「pip install requests」でインストールをお願いします。
(図111)

(1-2) ①「ヘッダー」の指定方法

・requestsのget/postメソッドに「headers={“key”,”value”}」で指定。
・Dictionary型
・カンマ区切りで複数指定も可能
 
(例)
import requests
~中略~
response = requests.get(url, headers={"Content-Type":"text","User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"})

(1-3) ②「ボディ」の指定方法

・requestsのget/postメソッドに「data={“key1”: “value1”}」で指定。
・Dictionary型or Byte型で指定。
・カンマ区切りで複数指定も可能。
 
(例)
import requests
~中略~
    body = {
        "key1": "value1",
        "key2": "value2"
    }
    data = json.dumps(body)

    response = requests.post(url, data=data)

(1-4) ③「認証情報」の指定方法

(1-4-1) ●Basic認証

・requestsのget/postメソッドに「auth=([ユーザーID], [パスワード])」を指定。
 
(例)
import requests
~中略~
response = requests.get(url, auth=([ユーザーID], [パスワード]))

(1-5) ④「パラメータ」の指定方法

利用者側(クライアント)から指定できるパラメータで、リクエストの内容を制御する時に使う。
URLの末尾に「?」を付加し、以降に[key]=[value]の形式で記載。

(例)include_localeとuserがクエリパラメータに相当

https://rainbowplanet.slack.com/api/users.info?include_locale=&user=

(1-6) サンプルプログラム

Azure Logic AppsにHTTPリクエストを送り、DB更新を行うサンプルプログラムです。
Azure Logic Apps側で、リクエストのJSONボディを解析し、その内容をSQL ServerのテーブルにINSERTするように事前準備してあります(→★20230304_IT#0690_Azure_LogicApps_SQLServer_接続)
 
(図121)

(サンプルプログラム)
import json
import pandas as pd
import requests

def main():

    # APIのURL
    # →今回の場合はLogic AppsのURLを指定
    url = "https://prod-02.japaneast.logic.azure.com:443/workflows/8c49c44e1c614a8cb739a38705ceb0d8/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=C6Nfm1Vm-63jH5k1a69pNOOa69mH4_o9np7qNCjyQ0o"

    # ヘッダー部
    headers = {
        "Content-Type":"application/json",
        "User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",
        #"Authorization":"Bearer "+"===TOKEN==="
    }
    
    # ボディ部
    # →テーブルにINSERTする内容をJSONで指定
    body = {
        "crudType": "INSERT",
        "operationType": "joining",
        "employeeNo": "00000003",
        "lastName": "山田",
        "firstName": "五郎",
        "emailAddress": "yamada.taro.05@xxx.com",
        "joiningDate": "2022-01-01",
        "retirementDate": "NULL",
        "departmentCode": "444444"
    }
    data = json.dumps(body)

    # POSTリクエスト
    # 準備したURL、ヘッダー、ボディを指定して送る
    response = requests.post(url, headers=headers, data=data)
    
    # レスポンスの内容をtext形式で取得
    result = response.text
    print(result)

if __name__ == "__main__":
     main()
(図131)
 
プログラムを流すと、テーブルにレコードが追加される様子を確認できます。
(動画132)
(参考)
今回使用したrequestライブラリのドキュメントをご紹介します。非常に簡単で直感的にHTTP/1.1バージョンに準拠したリクエストを送れるため、非常に使い勝手が良いと感じます(ドキュメントもかなり細かく書かれており、割と保守もされていそう)

Adsense審査用広告コード


Adsense審査用広告コード


-Python

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

PythonでAPIを呼び出すサンプルプログラムをご紹介

  <目次> (1) PythonでAPIを呼び出すサンプルプログラム  (1-1) 構文  (1-2) STEP1:事前準備  (1-3) STEP2:疎通①(最もシンプルなAPI呼び出し …

Pythonのconfigparesrで書き込みや書き換え等の基本的な使い方をご紹介

<目次> (1) Pythonのconfigparesrで書き込みや書き換え等の基本的な使い方をご紹介  (1-1) ConfigParserクラスについて  (1-2) サンプルプログラム  (1- …

Anacondaのインストール手順(Windows 10の例)

  <目次> (1) Anacondaのインストール手順(Windows 10の例)  (1-1) STEP1:インストーラーの入手と起動  (1-2) STEP2:インストール  (1-3 …

Bing AIのAPIを疎通(HelloWorld)

  <目次> (1) Bing AIのAPIを疎通(HelloWorld)  やりたいこと/概要  前提条件  STEP1:Bing Web Search APIにサインアップ  STEP2 …

PythonでSQLAlchemyを使ってOracleDBに接続する際に遭遇したエラーとその対処方法

本記事は次の記事の続編です。 (下記記事の手順を実行する際に遭遇したエラーについての備忘録) PythonでSQLAlchemyを使ってOracleDBに接続する方法 (0) 目次 (4) エラー対応 …

  • English (United States)
  • 日本語
Top