Auth状態の処理方法
一般的な方法
1. セッション/Cookie
Apidogは、セッション/Cookieを通じるAuth 状態を自動的に維持します。
利用シーン:
- ログインAPIが実行されると、グローバルCookieは返されたセッション/Cookie 情報を保存します。
- 他のAPIを実行すると、セッション/Cookie 情報が自動的に添付されます。
ご案内:
セッション/Cookieを使用して自動ログインを実現する方法の詳細については、以下をご覧ください。
2. Token
Tokenという方法は、ログイン資格情報をAPI Requestのパラメータ(通常はHeader)に入れています。一般的な方法には、Basic Auth、Bearer Token、API Keyなどがあります。
利用シーン:
- 方法 1:グローバル(ルートディレクトリ)→APIのグループ →API(ドキュメントの変更ページ)でAuth 情報を設定します。以下のスクリーンショットに示すように、様々な認証タイプをサポートしています。
方法 2:TokenをHeader、またはその他の関連パラメータに手動で書き込みます。環境変数を使用してTokenを保存するのがおすすめです。以下の例を参照してください:
- Bearer Token: Authorizationという名前のHeaderを設定し、その値をBearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9yJpZCI6にします(若しくは値がBearer {{AUTH_TOKEN}}の環境変数を利用します)。
方法 3:グローバルパラメータの値を設定します。実行中に、すべてのAPIは自動的にグローバルパラメータを含みます。したがって、APIごとに手動で設定する必要はありません。
ご案内:
Tokenを通じて自動ログインを実現する方法の詳細については、以下をご覧ください。
3. 自動ログインの方法
ログインAPIは、ログインを完了するために自動的に呼び出されますので、手動操作を必要としません。
自動ログインの実現方法
期待の効果
- ログインAPIは、ログインを完了するために自動的に呼び出され、手動操作を必要としません。
- 成功的にログインすると、二度とログインAPIを呼び出しないように、認証状態を保存します。
実現方法
- 環境変数(例:ACCESS_TOKEN)を使用して、ログインに必要な資格情報を保存します。
- 資格情報に有効期限がある場合は、環境変数(例:ACCESS_TOKEN_EXPIRES)を使用して、ログイン資格情報の有効期限をも保存します。
- 次のような共通Scriptを作成します:
- このScriptは、環境変数のACCESS_TOKENに値があるかどうか、または、ACCESS_TOKEN_EXPIRESの有効期限が切れているかどうかを判断します。確かな値が存在し、しかも期限が切れていない場合は、実行操作になります。それ以外の場合は、次のステップに進みます。
- pm.sendRequestを使用してログインAPIを呼び出し、返されたログイン資格情報と有効期限を環境変数に書き込みます。
- Auth 状態が必要なAPIを設定します:
- Auth 状態を認証するパラメータの値を{{ACCESS_TOKEN}}に設定します。
- Header 中のAuthorizationを{{ACCESS_TOKEN}}に設定します。ここでCookieやその他の場所にあるパラメータを使用することもできますが、ニーズに応じてに最も適したものを選んでください。
- グローバルパラメータの値を設定します。実行中に、すべてのAPIは自動的にグローバルパラメータを含みますので、APIごとに手動で設定する必要はありません。
- 前処理Scriptで作成した上記の共通Scriptを参照します。
- Auth 状態を認証するパラメータの値を{{ACCESS_TOKEN}}に設定します。
共通Scriptの例
ご案内:
- 以下のScript 中のログイン用のユーザー名とパスワードは、環境変数 LOGIN_USERNAMEとLOGIN_PASSWORDから来ています。コードを直接コピーする場合は、これら2つの環境変数を手動で設定することを忘れないようにしてでください。
- Tokenの有効期限が切れない場合は、ACCESS_TOKEN_EXPIRESに関連するコードを削除してください。
- pm.sendrequestに関するドキュメントをここでご覧ください。
- pm.cookies に関するドキュメントをここでご覧ください。
// Define the method for sending login request
function sendLoginRequest() {
// Get the base_url in the environment variable
const baseUrl = pm.environment.get("BASE_URL");
// Get the username from environment variable LOGIN_USERNAME
const username = pm.environment.get("LOGIN_USERNAME");
// Get the password from environment variable LOGIN_PASSWORD
const password = pm.environment.get("LOGIN_PASSWORD");
// Construct a POST request x-www-form-urlencoded. You will need to modify the request parameters as needed.
const loginRequest = {
url: baseUrl + "/api/v1/login",
method: "POST",
// body: x-www-form-urlencoded format.
body: {
mode: "urlencoded",
urlencoded: [
{ key: "account", value: "apidog" },
{ key: "password", value: "123456" },
],
},
/*
// body: form-data format
body: {
mode: 'formdata',
formdata: [
{ key: 'account', value: 'apidog' },
{ key: 'password', value: '123456' }
]
}
// body: json format
header: {
"Content-Type": "application/json", // Add Content-Type to header.
},
body: {
mode: 'raw',//
raw: JSON.stringify({ account: 'apidog', password:'123456' }), // Serialized JSON string
}
// body: raw or json format
body: {
mode: 'raw',
raw: 'body content',
}
*/
};
// pm.sendrequest View documentation: https://www.apidog.com/help/app/scripts/api-references/pm-reference/#pm-sendrequest
pm.sendRequest(loginRequest, function(err, res) {
if (err) {
console.log(err);
} else {
// read the returned json data
// If your token information is stored in a cookie, you can use res.cookies.get('token') to get it.
// view documentation for cookies here: https://www.apidog.com/help/app/scripts/api-references/pm-reference/#pm-cookies
const jsonData = res.json();
// write accessToken into the environment variable ACCESS_TOKEN
pm.environment.set("ACCESS_TOKEN", jsonData.data.accessToken);
// write accessTokenExpires into the environment variable ACCESS_TOKEN_EXPIRES
pm.environment.set(
"ACCESS_TOKEN_EXPIRES",
jsonData.data.accessTokenExpires
);
}
});
}
// Get accessToken from the environment variable ACCESS_TOKEN
const accessToken = pm.environment.get("ACCESS_TOKEN");
// Get accessTokenExpires from the environment variable ACCESS_TOKEN_EXPIRES
const accessTokenExpires = pm.environment.get("ACCESS_TOKEN_EXPIRES");
// If ACCESS_TOKEN has no value, or ACCESS_TOKEN_EXPIRES has expired, send the login request.
if (
!accessToken ||
(accessTokenExpires && new Date(accessTokenExpires) <= new Date())
) {
sendLoginRequest();
}