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のdatapackage学習中に遭遇したエラー「StopIteration」と「AttributeError」の対応

(0)目次&概説 (1) 記事の目的 (2) エラー1:AttributeError: ‘generator’ object has no attribute ‘n …

Azure Machine Learningで「OSError: Could not find kaggle.json」が出た時の原因と対処方法について

  <目次> (1) Azure Machine Learningで「OSError: Could not find kaggle.json」が出た時の原因と対処方法について  (1-1) …

Pythonで「ERROR: Could not install packages due to an OSError: [WinError 2]」が出た時の原因と対処方法について

  <目次> (1) Pythonで「ERROR: Could not install packages due to an OSError: [WinError 2]」が出た時の原因と対処 …

Slack AppのWorkflow Stepsの使い方

  <目次> (1) Slack AppのWorkflow Stepsの使い方  (1-0) やりたいこと  (1-1) STEP1:Slackボットの開発(所要時間:60分)  (1-2) …

CondaHTTPError: HTTP 000 CONNECTION FAILED for url XXXXエラーの対処方法

  <目次> (1) CondaHTTPError: HTTP 000 CONNECTION FAILED for url XXXXエラーの対処方法  (1-1) 事象概要とエラーメッセージ …

  • English (United States)
  • 日本語
Top