GET api
サンプルコード
GET api を呼び出すサンプルコードをご紹介します。
下記のコードをep-api.pyというファイル名で保存します。
import base64 |
import contextlib |
import hashlib |
import hmac |
import json |
import ssl |
import time |
import urllib.request |
endpoint = 'ep.api.iij.jp' |
api_version = '20190625' |
api_name = 'api_version' |
http_method = 'GET' |
access_key = b'YOUR ACCESS KEY HERE' |
secret_key = b'YOUR SECRET KEY HERE' |
signature_version = '2' |
signature_method = 'HmacSHA256' |
content_type = '' |
expire = time.strftime('%FT%H:%M:%SZ', time.gmtime(time.time() + 12 * 60 * 60)) |
# make signature |
path = '/r/{}/{}.json'.format(api_version, api_name) |
header_strings = content_type + '\n' |
header_strings += 'x-iijapi-expire' + ':' + expire + '\n' |
header_strings += 'x-iijapi-signaturemethod' + ':' + signature_method + '\n' |
header_strings += 'x-iijapi-signatureversion' + ':' + signature_version |
string_to_sign = '\n'.join([http_method.upper(), '', header_strings, path]) |
signature = hmac.new(secret_key, string_to_sign.encode('utf-8'), hashlib.sha256).digest() |
signature = base64.b64encode(signature) |
# setup SSL context |
context = ssl.create_default_context() |
https_handler = urllib.request.HTTPSHandler(context=context) |
opener = urllib.request.build_opener(https_handler) |
urllib.request.install_opener(opener) |
# make request |
headers = { |
'Authorization': b'IIJAPI ' + access_key + b':' + signature, |
'Content-Type': content_type, |
'x-iijapi-Expire': expire, |
'x-iijapi-SignatureMethod': signature_method, |
'x-iijapi-SignatureVersion': signature_version, |
} |
url = 'https://{}{}'.format(endpoint, path) |
request = urllib.request.Request(url, headers=headers) |
# call EP-API |
with contextlib.closing(urllib.request.urlopen(request)) as conn: |
response = conn.read() |
print(json.loads(response.decode())) |
実行例
下記の実行例は python 3.10.12 環境で実行しています。
$ python ep-api.py |
{'APIResult': {'RequestId': 'f9ba8be1-52dfb362-976062fa-0000db9f-d7d7668c', 'APIVersions': ['20190625']}} |