Loading [MathJax]/extensions/tex2jax.js

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型
・カンマ区切りで複数指定も可能
 
(例)
  1. import requests
  2. ~中略~
  3. 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型で指定。
・カンマ区切りで複数指定も可能。
 
(例)
  1. import requests
  2. ~中略~
  3. body = {
  4. "key1": "value1",
  5. "key2": "value2"
  6. }
  7. data = json.dumps(body)
  8.  
  9. response = requests.post(url, data=data)

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

(1-4-1) ●Basic認証

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

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

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

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

  1. 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)

(サンプルプログラム)
  1. import json
  2. import pandas as pd
  3. import requests
  4.  
  5. def main():
  6.  
  7. # APIのURL
  8. # →今回の場合はLogic AppsのURLを指定
  9. 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"
  10.  
  11. # ヘッダー部
  12. headers = {
  13. "Content-Type":"application/json",
  14. "User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",
  15. #"Authorization":"Bearer "+"===TOKEN==="
  16. }
  17. # ボディ部
  18. # →テーブルにINSERTする内容をJSONで指定
  19. body = {
  20. "crudType": "INSERT",
  21. "operationType": "joining",
  22. "employeeNo": "00000003",
  23. "lastName": "山田",
  24. "firstName": "五郎",
  25. "emailAddress": "yamada.taro.05@xxx.com",
  26. "joiningDate": "2022-01-01",
  27. "retirementDate": "NULL",
  28. "departmentCode": "444444"
  29. }
  30. data = json.dumps(body)
  31.  
  32. # POSTリクエスト
  33. # 準備したURL、ヘッダー、ボディを指定して送る
  34. response = requests.post(url, headers=headers, data=data)
  35. # レスポンスの内容をtext形式で取得
  36. result = response.text
  37. print(result)
  38.  
  39. if __name__ == "__main__":
  40. main()
(図131)
 
プログラムを流すと、テーブルにレコードが追加される様子を確認できます。
(動画132)
(参考)
今回使用したrequestライブラリのドキュメントをご紹介します。非常に簡単で直感的にHTTP/1.1バージョンに準拠したリクエストを送れるため、非常に使い勝手が良いと感じます(ドキュメントもかなり細かく書かれており、割と保守もされていそう)

Adsense審査用広告コード


Adsense審査用広告コード


-Python

執筆者:


comment

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

関連記事

no image

Pythonでランダムな座標データを生成する方法

  <目次> (1) Pythonでランダムな座標データを生成する方法  (1-1) 使う構文  (1-2) サンプルプログラム  (1-3) 補足:データの座標を全体的にシフトしたい場合 …

Azure FunctionsでPythonのライブラリを追加する方法(依存関係解決)

  <目次> (1) Azure FunctionsでPythonのライブラリを追加する方法(依存関係解決)  (1-1) requirement.txtの設定手順  (1-2) 補足事項 …

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

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

Pythonでcsvを読み込んでデータベース化する方法~pandasのto_sqlを用いたテーブルへのINSERT~

<目次> (1) Pythonでcsvを読み込んでデータベース化する方法  (1-1) 構文(to_sql)  (1-2) 構文(to_sql)の引数  (1-3) サンプルプログラム (1) Pyt …

脳波をPythonプログラムで取得して、解析できるようにしたい

  <目次> 脳波をPythonプログラムで取得して、解析できるようにしたい  やりたいこと  STEP1:前提条件(事前準備)  STEP2:デバイス(MindWave Mobile 2) …

  • English (United States)
  • 日本語
S