Scriptsを使用して、Requestの情報を読み取る/変更する
pm.requestを使用してRequestの情報を読み取り/変更できます。
ご注意:
- Scriptsを使用して、すべてのRequestのパラメータを取得できますが、HeaderとQueryパラメータの変更にのみ使用できます。
- HeaderとQueryパラメータの変更は前処理Scriptでのみ有効ですが、後処理Scriptで適用されません。
- Scriptを使用して取得したAPIのパラメータに変数が含まれている場合、それは相応の値に置き換えられません。 pm.variables.replaceInメソッドを使用して実際値を取得する必要があります。
// pm.variables.replaceIn: handling variables in parameters
var body = pm.variables.replaceIn(pm.request.body.raw);
var jsonData = JSON.parse(body);
URL 関連情報
// Get an url object.
var urlObj = pm.request.url;
// Get the full url of the API request
var url = urlObj.toString();
// Get protocols (http or https).
var protocol = urlObj.protocol;
// Get the port.
var port = urlObj.port;
Headerのパラメータ
Headerのパラメータの取得:
// Get header parameters.
var headers = pm.request.headers;
// Get the value of the field1 key from the header.
var field1 = headers.get("field1");
// Get all header parameters as key-value objects.
var headersObject = headers.toObject();
// Iterate over the entire header.
headers.each((item) => {
console.log(item.key); // log the item key
console.log(item.value); // log the item value
});
Headerのパラメータの変更:
// Get header parameters.
var headers = pm.request.headers;
// Add a header parameter.
headers.add({
key: "field1",
value: "value1",
});
// Modify a header parameter (add a header parameter if it does not exist).
headers.upsert({
key: "field2",
value: "value2",
});
Queryパラメータ
Queryパラメータの取得:
// Get query parameters.
var queryParams = pm.request.url.query;
// Get the value of the field1 key from the header.
var field1 = queryParams.get("field1");
// Get all header parameters as key-value objects.
var quertParamsObject = queryParams.toObject();
// Iterate over the entire header.
queryParams.each((item) => {
console.log(item.key); // log the item key
console.log(item.value); // log the item value
});
Queryパラメータの変更:
// Get a query parameter.
var queryParams = pm.request.url.query;
// Add a query parameter.
queryParams.add({
key: "field1",
value: "value1",
});
// Modify a query parameter (add a query parameter if it does not exist).
queryParams.upsert({
key: "field2",
value: "value2",
});
Bodyパラメータ
Bodyパラメータは、pm.request.body.から来ています。pm.request.bodyは、RequestBodyの例になります。
より詳しくはhttp://www.postmanlabs.com/postman-collection/RequestBody.htmlをご覧ください。
ご案内:
- Bodyのデータ変更については、Body 内の変数を参照して、前処理Scriptで変数の値を設定することで変更することをお勧めします。
- Apidog 1.4.16 以降のバージョンでは、Bodyパラメータの直接変更をサポートしています。下記の使用方法の例を参照してください。
var body = pm.request.body.toJSON();
console.log("body object", body);
var bodyStr = body.raw;
console.log("body string", bodyStr);
var bodyJSON = JSON.parse(bodyStr);
bodyJSON.id = 100;
pm.request.body.update(JSON.stringify(bodyJSON, null, 2));
console.log("Modified body", pm.request.body.toJSON());
1. Bodyタイプがform-dataの場合
form-dataの情報を取得する:
// When body is form-data, use pm.request.body.formdata to get request parameters.
var formData = pm.request.body.formdata;
// Get the value of the field1 key from the header.
var field1 = formData.get("field1");
console.log(field1); // log field 1
// Get all header parameters as key-value objects.
var formdataObject = formData.toObject();
console.log(formdataObject); // log formdataObject
// Iterate over form-data.
formData.each((item) => {
console.log(item.key); // log the item key
console.log(item.value); // log the item value
});
2. Bodyタイプがx-www-form-urlencodeの場合
x-www-form-urlencodeの情報を取得する:
// When body is x-www-form-urlencode, use pm.request.body.urlencoded to get request parameters.
var formData = pm.request.body.urlencoded;
// Get the value of the field1 key from the header.
var field1 = formData.get("field1");
// Get all header parameters as key-value objects.
var formdataObject = formData.toObject();
// Iterate over form-data.
formData.each((item) => {
console.log(item.key); // log the item key
console.log(item.value); // log the item value
});
3. BodyタイプはJSONの場合
JSONの情報を取得する:
// When body type is json, use pm.request.body.raw to get request parameters.
try {
var jsonData = JSON.parse(pm.request.body.raw);
console.log(jsonData); // log JSON data.
} catch (e) {
console.log(e);
}
4. Bodyタイプがrawの場合
rawの情報を取得する:
// When body type is raw, use pm.request.body.raw to get request parameters.
var raw = pm.request.body.raw;
console.log(raw); // log raw data.