Maak aangepaste API-responstransformaties in Postman of Insomnia
description
Maakt het mogelijk om API-responsedata dynamisch aan te passen zodat deze beter aansluit bij specifieke test- of integratiebehoeften, wat tijd bespaart en de relevantie van tests verhoogt. Deze prompt helpt bij het creëren van flexibele transformaties die verder gaan dan standaard validatie of mocking, wat testworkflows verrijkt met aangepaste dataverwerking.
prompt
Help me met het maken van aangepaste transformatiescripts voor API-responses in <kies Postman of Insomnia> voor mijn API-eindpunt: <voer je API-eindpunt in>. Ik wil de response data aanpassen door formaten te wijzige ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier zijn enkele voorbeelden van Postman-transformatiescripts voor het aanpassen van API-responses, inclusief JSON en XML.
1. JSON-response aanpassen
a) Velden hernoemen en formaten wijzigen
```javascript
// Parse de JSON response
let responseData = pm.response.json();
// Hernoem een veld, bijvoorbeeld 'name' naar 'volledigeNaam'
responseData.forEach(user => {
user.volledigeNaam = user.name;
delete user.name;
});
// Wijzig datumnotatie, bijvoorbeeld van ISO naar een ander formaat
responseData.forEach(user => {
if (user.createdAt) {
let date = new Date(user.createdAt);
user.createdAtFormatted = date.toLocaleDateString('nl-NL');
delete user.createdAt;
}
});
// Filter content: bijvoorbeeld alleen gebruikers met actief = true
responseData = responseData.filter(user => user.actief === true);
// Zet de aangepaste data terug naar JSON-string voor gebruik
pm.environment.set("response_data", JSON.stringify(responseData));
```
b) Gebruik in tests voor verdere verwerking
```javascript
// Toegang tot de aangepaste response data
let aangepasteData = JSON.parse(pm.environment.get("response_data"));
// Gebruik bijvoorbeeld in verdere tests
pm.test("Aantal actieve gebruikers", () => {
pm.expect(aangepasteData.length).to.be.greaterThan(0);
});
```
2. XML-response aanpassen
Omdat Postman standaard JSON beter ondersteunt, is XML wat complexer, maar je kunt xml2js gebruiken via pm.sendRequest of custom scripts.
Voorbeeld: XML response parseren en aanpassen
```javascript
let responseText = pm.response.text();
let parseString = require('xml2js').parseString;
parseString(responseText, (err, result) => {
if (err) {
console.error('Fout bij parseren XML:', err);
return;
}
// voorbeeld: hernoem veld 'naam' naar 'volledigeNaam'
result.users.user.forEach(user => {
user.volledigeNaam = user.naam[0];
delete user.naam;
});
// eventueel terugzetten naar XML (vergt aanvullende conversie)
// of gebruik de aangepaste objecten verder in je tests
pm.environment.set("xml_data", JSON.stringify(result));
});
```
3. Algemene tips
- Gebruik `pm.response.json()` voor JSON.
- Voor XML, gebruik `xml2js` library (via require), en converteer naar JSON voor gemakkelijke manipulatie.
- Sla aangepaste data op in environment variables voor gebruik in volgende requests.
- Pas scripts aan op je specifieke response structuur en doelen.
Wil je een specifiek voorbeeld op maat voor jouw API-response?
provider: deepseek
model: deepseek-chat
Hier zijn praktische voorbeelden van Postman-testscripts voor het transformeren van API-responses van jouw eindpunt `https://api.example.com/users`:
## 1. JSON Response Transformatie
```javascript
// Voeg dit toe in de "Tests" tab van je request
// Originele response opslaan
const originalResponse = pm.response.json();
// Transformeer de data
const transformedData = originalResponse.data.map(user => {
return {
gebruikerId: user.id,
volledigeNaam: `${user.first_name} ${user.last_name}`,
emailAdres: user.email,
actief: user.status === 'active',
aanmaakDatum: new Date(user.created_at).toLocaleDateString('nl-NL'),
leeftijd: user.age || 'Onbekend'
};
});
// Opslaan in environment voor later gebruik
pm.environment.set("getransformeerdeGebruikers", JSON.stringify(transformedData));
pm.environment.set("aantalGebruikers", transformedData.length);
// Log voor debugging
console.log("Getransformeerde gebruikers:", transformedData);
```
## 2. Dynamisch Filteren van Data
```javascript
// Filter gebruikers op basis van criteria
const response = pm.response.json();
const gefilterdeGebruikers = response.users.filter(user => {
// Alleen actieve gebruikers met e-mail verificatie
return user.status === 'active' &&
user.email_verified === true &&
user.last_login !== null;
});
// Sorteer op aanmaakdatum (nieuwste eerst)
const gesorteerdeGebruikers = gefilterdeGebruikers.sort((a, b) => {
return new Date(b.created_at) - new Date(a.created_at);
});
// Transformeer naar gewenst formaat
const resultaat = gesorteerdeGebruikers.map(user => ({
id: user.id,
naam: user.name,
rol: user.role.toUpperCase(),
laatsteLogin: user.last_login ?
new Date(user.last_login).toISOString().split('T')[0] : 'Nooit'
}));
pm.environment.set("gefilterdeGebruikersLijst", JSON.stringify(resultaat));
```
## 3. XML Response Verwerking
```javascript
// Voor XML responses
const xmlResponse = pm.response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlResponse, "text/xml");
// XML naar JSON transformeren
const users = xmlDoc.getElementsByTagName("user");
const transformedUsers = [];
for (let i = 0; i < users.length; i++) {
const user = users[i];
transformedUsers.push({
gebruikersnaam: user.getElementsByTagName("username")[0].textContent,
voornaam: user.getElementsByTagName("firstname")[0].textContent,
achternaam: user.getElementsByTagName("lastname")[0].textContent,
telefoon: user.getElementsByTagName("phone")[0]?.textContent || 'Niet opgegeven'
});
}
pm.environment.set("xmlGebruikers", JSON.stringify(transformedUsers));
```
## 4. Geavanceerde Data Manipulatie
```javascript
const response = pm.response.json();
// Data aggregatie en transformatie
const statistieken = {
totaalGebruikers: response.data.length,
actieveGebruikers: response.data.filter(u => u.active).length,
gebruikersPerRol: {},
gemiddeldeLeeftijd: 0
};
// Bereken statistieken
const leeftijden = response.data
.map(u => u.age)
.filter(age => age && !isNaN(age));
statistieken.gemiddeldeLeeftijd = leeftijden.length > 0 ?
Math.round(leeftijden.reduce((a, b) => a + b) / leeftijden.length) : 0;
// Groepeer gebruikers per rol
response.data.forEach(user => {
const rol = user.role || 'geen_rol';
statistieken.gebruikersPerRol[rol] = (statistieken.gebruikersPerRol[rol] || 0) + 1;
});
// Formatteer voor rapportage
const rapport = {
samenvatting: `Totaal: ${statistieken.totaalGebruikers} gebruikers, ${statistieken.actieveGebruikers} actief`,
verdeling: statistieken.gebruikersPerRol,
demografie: `Gemiddelde leeftijd: ${statistieken.gemiddeldeLeeftijd} jaar`
};
pm.environment.set("gebruikersStatistieken", JSON.stringify(rapport));
pm.environment.set("samenvattingRapport", rapport.samenvatting);
```
## 5. Pre-request Script voor Dynamische Parameters
```javascript
// Voeg toe in "Pre-request Script" tab
const vandaag = new Date().toISOString().split('T')[0];
const eenWeekGeleden = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
.toISOString().split('T')[0];
// Stel query parameters in
pm.request.url.addQueryParams([
{
key: 'created_after',
value: eenWeekGeleden
},
{
key: 'sort_by',
value: 'last_login'
},
{
key: 'limit',
value: '50'
}
]);
// Headers instellen
pm.request.headers.add({
key: 'X-Custom-Filter',
value: 'recent-active'
});
```
## Gebruik in Volgende Requests:
In volgende requests kun je de getransformeerde data gebruiken:
```javascript
// In een later request
const getransformeerdeData = JSON.parse(pm.environment.get("getransformeerdeGebruikers"));
const gebruikersIds = getransformeerdeData.map(user => user.gebruikerId);
// Gebruik in request body
pm.request.body.raw = JSON.stringify({
selected_users: gebruikersIds,
operation: "bulk_update"
});
```
## Tips:
- Gebruik `console.log()` voor debugging
- Sla tussenresultaten op in environment variables
- Test je scripts met verschillende response formats
- Gebruik try-catch blokken voor error handling
Deze scripts kun je aanpassen aan jouw specifieke API-response structuur en transformatiebehoeften.