🔐 API実行時のユーザー管理(UIDの扱い)
APIの認証とユーザー管理を適切に行うため、以下のポイントを押さえましょう。
💡 UIDの基本仕様
Login API を実行後に発行される
uid
は一時的なセッションID です。同じユーザーで再ログインすると、以前の
uid
は失効します。システムの更新やメンテナンス時にも
uid
が無効化されることがあります。失効した
uid
では API 認証が通らないため、適切なリトライ処理が必要です。
📌 実装ガイドライン
API を安定的に利用するため、以下のポイントを実装してください。
① uid
の管理
✅ セッション管理を行う
uid
は一時的な識別子のため、サーバー側で適切に保存・管理してください。uid
の有効期限を考慮し、適宜再ログインする処理を実装する。
✅ APIコールはサーバー経由で行うことを推奨
クライアント(Web / アプリ)から直接APIを実行すると
uid
の失効管理が難しくなるため、サーバー側でAPIコールを管理するのがベストプラクティス。
✅ 同じユーザーでログインする際は、新しい uid
を必ず使用する
既存の
uid
を使い続けると認証エラーになる可能性があるため、都度最新のuid
を利用する。
② uid
失効時のリトライ処理
🚨 APIの認証エラー(401 Unauthorized)時の対応 (あくまでも例です)
uid
が失効した場合、APIリクエストは401エラーを返します。401エラーを検出した場合は、即座に再ログイン処理を行い、新しい
uid
を取得する。APIリトライの実装は以下のように行ってください。
import requests import time API_BASE_URL = "https://api.enegaeru.com" LOGIN_ENDPOINT = "/login" DATA_ENDPOINT = "/getData" USER_CREDENTIALS = { "username": "your_username", "password": "your_password" } # ❶ 初回ログインで uid を取得 def login(): response = requests.post(f"{API_BASE_URL}{LOGIN_ENDPOINT}", json=USER_CREDENTIALS) if response.status_code == 200: return response.json()["uid"] else: raise Exception("Login failed") # ❷ APIコール(リトライ機能付き) def call_api_with_retry(): uid = login() max_retries = 3 # 最大3回リトライ retry_delay = 2 # リトライ間隔(秒) for attempt in range(max_retries): headers = {"Authorization": f"Bearer {uid}"} response = requests.get(f"{API_BASE_URL}{DATA_ENDPOINT}", headers=headers) if response.status_code == 200: return response.json() # 正常なレスポンス elif response.status_code == 401: # 認証エラー(uid失効) print(f"Attempt {attempt + 1}: UID expired, re-login...") uid = login() # 再ログイン time.sleep(retry_delay) else: print(f"Unexpected error: {response.status_code}") break raise Exception("API call failed after multiple retries") # API実行 data = call_api_with_retry() print(data)
📝 まとめ(FAQ形式)
質問 | 回答 |
| - 同じユーザーで再ログインした時 - システムの更新やメンテナンス時 |
失効した | APIの認証が通らず |
APIコール時に | - サーバー経由でAPIコールを管理する - 常に最新の |
認証エラー(401)が発生したら? | - 即座に再ログインし、新しい |
リトライ処理の推奨設定は? | - 最大 3回 のリトライ - 1回目失敗後 2秒間隔 で再試行 |
📩 お問い合わせ
技術的なサポートや実装に関するご質問は info@enegaeru.com までお気軽にご相談ください!