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でcsvのカラム名を変更する方法(Pandasのread_csvで読み込んだcsvのカラム名変更)

<目次> (1) Pythonでcsvのカラム名を変更する方法  (1-1) 構文①  (1-2) サンプルプログラム①  (1-3) 構文②  (1-4) サンプルプログラム② PythonのPan …

PythonでSQLAlchemyを使ってOracleDBに接続する方法

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) 事前準備  (2-1) 準備1(cx_oracleパッケージの導入)   (2-1-1) インストール資源の入 …

Slack AppのWorkflow Stepsの使い方

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

pyenvの使い方(基礎編)をご紹介

  <目次> (1) pyenvの使い方(基礎編)をご紹介  (1-1) STEP1:インストール系のコマンド  (1-2) STEP2:バージョンの適用/切り替え系のコマンド  (1-3) …

Pythonのコンストラクタの基礎と「self」や「__init__」について

<目次> (1) Pythonのコンストラクタの基礎と「self」や「__init__」について  (1-1) 「__init__」やコンストラクタについて  (1-2) コンストラクタで使われる「s …

  • English (United States)
  • 日本語
Top