slogan3

Ontwikkel een Postman Workflow voor API Endpoint Foutdiagnose en Logging

description

Met deze prompt ontwikkel je een geavanceerde Postman workflow die automatisch fouten detecteert en logt, waardoor je sneller problemen kunt opsporen en oplossen. Dit verbetert de betrouwbaarheid van je API-tests en maakt foutanalyse efficiënter dan handmatige methoden.

prompt

Help me een Postman workflow te ontwikkelen die gericht is op het automatisch detecteren, loggen en diagnosticeren van fouten bij API endpoints. API Naam: <voer de naam van je API in> Specifieke endpoints om te monitoren: <lijst met API endpoints> Fouttypen om te loggen: <beschrijf fouttypen zoals time-outs, 4xx/5xx responses, validatiefouten> Gewenste logfor ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een uitgebreide Postman-workflow voor het automatisch detecteren, loggen en diagnosticeren van fouten bij jouw API endpoints (/users, /orders). Deze workflow bevat scripts die je direct in Postman kunt gebruiken, inclusief voorbeeldcodes voor tests en logs, en suggesties voor opslag en rapportage. --- ### Overzicht van de workflow: 1. **Monitoren van endpoints (/users, /orders)** 2. **Detecteren van foutstatussen (4xx, 5xx) en validatiefouten** 3. **Loggen van relevante informatie (status, headers, body, authorization, request data)** 4. **Automatisch rapporteren en analyseren** --- ## Stap 1: Setup van Postman Monitors Maak een monitor voor elke endpoint: - `/users` - `/orders` Gebruik de Postman Monitor functie om deze endpoints periodiek te testen (bijvoorbeeld elke 5 minuten). --- ## Stap 2: Testscript voor detectie en logging Plaats onder `Tests` in elke request de volgende code: ```javascript // Definieer variabelen voor logging const responseStatus = pm.response.code; const responseBody = pm.response.json(); const requestHeaders = pm.request.headers.toObject(); const requestBody = pm.request.body ? pm.request.body.raw : 'Geen body aanwezig'; const authorizationHeader = pm.request.headers.get('Authorization') || 'Geen Authorization header'; // Functie om log te sturen naar externe opslag (bijvoorbeeld via webhook of API) function logFout(details) { // Pas deze URL aan naar je logopslag const logUrl = 'https://jouw-logserver.com/api/logs'; pm.sendRequest({ url: logUrl, method: 'POST', header: { 'Content-Type': 'application/json' }, body: { mode: 'raw', raw: JSON.stringify(details) } }); } // Detecteer foutstatussen en validatiefouten if (responseStatus >= 400 && responseStatus < 600) { let foutType = ''; if (responseStatus >= 400 && responseStatus < 500) { foutType = '4xx Response'; } else if (responseStatus >= 500 && responseStatus < 600) { foutType = '5xx Response'; } // Check validatiefouten (bijvoorbeeld via response body of headers) let validatieFout = false; if (responseBody && responseBody.errors) { validatieFout = true; } // Log fout details logFout({ endpoint: pm.request.url.getPath(), status: responseStatus, foutType: foutType, request: { headers: requestHeaders, body: requestBody }, response: { body: pm.response.text(), headers: pm.response.headers.toObject() }, diagnostisch: { authorization: authorizationHeader }, timestamp: new Date().toISOString(), validatieFout: validatieFout }); } ``` --- ## Stap 3: Rapportage en analyse - **Externe logopslag**: De logs worden naar een externe server gestuurd (bijvoorbeeld een API of een logbeheerplatform). Zorg dat je die server hebt ingericht. - **Filtering en alerts**: Configureer je logserver om alerts te sturen bij meerdere foutmeldingen. - **Dashboard**: Maak dashboards of rapporten op basis van de logs voor snelle analyse. --- ## Stap 4: Verbeteringen en automatisering - **Gebruik environment variables** voor log-URL en andere instellingen. - **Voeg extra diagnostische data toe**, zoals response headers, request URL, en request body. - **Automatiseer validatiechecks** op response inhoud om validatiefouten nog beter te detecteren. --- ## Samenvatting Deze workflow biedt: - Automatische detectie van foutstatussen - Logging van relevante request- en responsegegevens - Extra diagnostische informatie (headers, body, authorization) - Mogelijkheid tot externe opslag en rapportage --- **Tip:** Test en verfijn de scripts in je Postman requests en monitor de logs om de workflow verder te optimaliseren. --- Heeft u verdere specificaties of hulp nodig bij het opzetten van de logserver of dashboards?
provider: deepseek
model: deepseek-chat
Hier is een complete Postman workflow voor het monitoren van je EcommerceAPI: ## 1. Collection Setup **Collection naam:** EcommerceAPI Monitoring **Beschrijving:** Automatische foutdetectie en logging voor /users en /orders endpoints ### Collection-level Script (Pre-request): ```javascript // Stel environment variabelen in pm.collectionVariables.set("baseUrl", "https://api.jouw-ecommerce.com"); pm.collectionVariables.set("currentTimestamp", new Date().toISOString()); ``` ### Collection-level Script (Tests): ```javascript // Globale foutafhandeling if (pm.response.code >= 400) { console.log(`Fout gedetecteerd: ${pm.response.code} - ${pm.request.url}`); } ``` ## 2. Request Templates ### Voorbeeld: GET /users Request **Headers:** ``` Authorization: {{authToken}} Content-Type: application/json User-Agent: EcommerceAPI-Monitor/1.0 ``` **Test Script voor /users:** ```javascript // Response validatie en foutlogging const response = pm.response; // Check op foutresponses if (response.code >= 400) { const errorLog = { timestamp: pm.collectionVariables.get("currentTimestamp"), endpoint: "/users", method: pm.request.method, statusCode: response.code, statusText: response.status, // Request informatie requestHeaders: { authorization: pm.request.headers.get("Authorization"), contentType: pm.request.headers.get("Content-Type") }, requestBody: pm.request.body ? pm.request.body.raw : null, // Response informatie responseBody: response.text(), responseTime: response.responseTime, // Omgevingsvariabelen environment: pm.environment.name, collection: pm.collection.name }; // Log naar console console.log("🚨 FOUT GEDETECTEERD:", JSON.stringify(errorLog, null, 2)); // Opslaan in environment voor latere export const errorCount = parseInt(pm.collectionVariables.get("errorCount") || "0") + 1; pm.collectionVariables.set("errorCount", errorCount.toString()); const errorKey = `error_${errorCount}`; pm.collectionVariables.set(errorKey, JSON.stringify(errorLog)); // Specifieke foutafhandeling if (response.code >= 400 && response.code < 500) { pm.test("4xx Client Error gedetecteerd", function () { pm.expect.fail(`4xx Fout: ${response.code} - ${response.status}`); }); // Validatiefouten detecteren const responseBody = response.json(); if (responseBody.errors || responseBody.message?.toLowerCase().includes("validatie")) { console.log("⚠️ Validatiefout gedetecteerd"); } } if (response.code >= 500) { pm.test("5xx Server Error gedetecteerd", function () { pm.expect.fail(`5xx Fout: ${response.code} - ${response.status}`); }); } } // Succes validatie if (response.code === 200) { pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); // Response schema validatie const jsonData = response.json(); pm.test("Response heeft verwachte structuur", function () { pm.expect(jsonData).to.be.an('object'); pm.expect(jsonData.users || jsonData.data).to.be.an('array'); }); } ``` ### Voorbeeld: POST /orders Request **Test Script voor /orders:** ```javascript // Vergelijkbare structuur als /users maar aangepast voor orders const response = pm.response; if (response.code >= 400) { const errorLog = { timestamp: pm.collectionVariables.get("currentTimestamp"), endpoint: "/orders", method: pm.request.method, statusCode: response.code, // Uitgebreide request info requestDetails: { headers: { authorization: pm.request.headers.get("Authorization"), contentType: pm.request.headers.get("Content-Type") }, body: pm.request.body ? JSON.parse(pm.request.body.raw) : null, url: pm.request.url.toString() }, responseDetails: { body: response.text(), time: response.responseTime, headers: response.headers.toObject() }, // Diagnostische context diagnostics: { hasAuthHeader: !!pm.request.headers.get("Authorization"), requestSize: pm.request.body ? pm.request.body.raw.length : 0, responseSize: response.responseSize } }; console.log("📋 ORDERS FOUT LOG:", JSON.stringify(errorLog, null, 2)); // Classificeer fouttype if (response.code === 401 || response.code === 403) { console.log("🔐 Authorization fout - check API tokens"); } else if (response.code === 422) { console.log("📝 Validatiefout - check request body data"); } } ``` ## 3. Environment Variabelen Stel deze variabelen in je Postman Environment in: ```json { "authToken": "Bearer your-api-token-here", "baseUrl": "https://api.jouw-ecommerce.com", "monitoringEnabled": "true", "logLevel": "debug" } ``` ## 4. Collection Runner Script **Monitoring Workflow Script:** ```javascript // Postman Collection Runner script const moment = require('moment'); // Configuratie const config = { endpoints: [ { name: "Get Users", url: "/users", method: "GET" }, { name: "Create Order", url: "/orders", method: "POST" }, { name: "Get Orders", url: "/orders", method: "GET" } ], interval: 300000, // 5 minuten maxRetries: 3 }; // Foutrapportage functie function generateErrorReport() { const errors = []; const errorCount = parseInt(pm.collectionVariables.get("errorCount") || "0"); for (let i = 1; i <= errorCount; i++) { const errorData = pm.collectionVariables.get(`error_${i}`); if (errorData) { errors.push(JSON.parse(errorData)); } } const report = { generatedAt: new Date().toISOString(), summary: { totalErrors: errors.length, errorByType: { "4xx": errors.filter(e => e.statusCode >= 400 && e.statusCode < 500).length, "5xx": errors.filter(e => e.statusCode >= 500).length, "validation": errors.filter(e => e.statusCode === 422 || e.responseBody?.toLowerCase().includes("validatie") ).length }, errorByEndpoint: errors.reduce((acc, error) => { acc[error.endpoint] = (acc[error.endpoint] || 0) + 1; return acc; }, {}) }, detailedErrors: errors }; console.log("📊 FOOTRAPPORT:", JSON.stringify(report, null, 2)); return report; } // Exporteer naar bestand (gebruik in Postman Collection Runner) pm.collectionVariables.set("lastReport", JSON.stringify(generateErrorReport())); ``` ## 5. Gebruiksaanwijzing ### Stap 1: Import in Postman 1. Maak een nieuwe Collection genaamd "EcommerceAPI Monitoring" 2. Plak de scripts in de respectievelijke sections 3. Stel de environment variabelen in ### Stap 2: Configureer Monitoring ```javascript // In je Collection Tests pm.setNextRequest("Get Users"); // Automatische sequentie ``` ### Stap 3: Run en Monitor 1. Gebruik Postman Collection Runner 2. Stel iteraties in voor continue monitoring 3. Bekijk console logs voor real-time foutdetectie ### Stap 4: Export Resultaten ```javascript // Voeg toe aan je Tests om data te exporteren const errors = pm.collectionVariables.get("errorData"); console.log("📁 Export ready - copy from console"); ``` Deze workflow geeft je: - ✅ Automatische foutdetectie voor 4xx/5xx responses - ✅ Gedetailleerde logging met request/response data - ✅ Validatiefout herkenning - ✅ Authorization header tracking - ✅ Exporteerbare rapportage - ✅ Real-time monitoring capabilities Je kunt deze direct in Postman plakken en aanpassen naar je specifieke API requirements!