slogan3

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

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.