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
tags
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!