Help me bij het simuleren van multi-stap API-workflows voor complexe integraties
description
Door deze prompt te gebruiken, kunt u effectief complexe integraties testen en valideren, en ervoor zorgen dat elke stap van de workflow naar verwachting werkt en fouten Gracevol afhandelt.
prompt
try_prompt
Ik wil een nep-API ontwerpen die multi-stap-workflows simuleert met meerdere eindpunten en gegevensomzettingen. Doel van de API: {{api_purpose}}. Belangrijke betrokken eindpunten: {{k ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorstel voor het ontwerpen van een nep-API die een multi-stap-workflow voor een bestelproces simuleert:
1. Eindpunten en gegevensstroom:
- POST /createOrder
- POST /processPayment
- GET /orderStatus/{orderId}
2. Workflow:
a. Bestelgegevens worden verzonden naar /createOrder.
b. Bij succesvolle creatie wordt een orderId geretourneerd.
c. Vervolgens wordt /processPayment aangeroepen met het orderId en betalingsgegevens.
d. De status van de bestelling kan worden gecontroleerd via /orderStatus/{orderId}.
3. Voorbeeld implementatie:
```json
// /createOrder (POST)
{
"klantId": "12345",
"artikelen": [
{"productId": "A1", "aantal": 2},
{"productId": "B2", "aantal": 1}
],
"adres": "Straat 123, Stad"
}
```
- Reactie:
```json
{
"orderId": "ORD123456",
"status": "geplaatst"
}
```
```json
// /processPayment (POST)
{
"orderId": "ORD123456",
"betalingMethode": "creditcard",
"kaartnummer": "1234-5678-9012-3456"
}
```
- Reactie:
```json
{
"orderId": "ORD123456",
"betalingStatus": "succesvol"
}
```
```json
// /orderStatus/{orderId} (GET)
{
"orderId": "ORD123456",
"status": "verwerkt" // of "in behandeling", "verzonden", "geannuleerd"
}
```
4. Foutafhandeling:
- /createOrder:
- Ongeldige gegevens: retourneer 400 met foutmelding.
- /processPayment:
- Betalingsfout: retourneer 402 of 400 met foutmelding.
- /orderStatus:
- Niet gevonden orderId: 404.
5. Statusbeheer:
- Gebruik een interne statusmachine:
- "geplaatst" → "in behandeling" → "verzonden" → "afgeleverd"
- Mogelijkheid tot annuleren of foutstatussen.
- Klanten kunnen de status opvragen via /orderStatus/{orderId}.
6. Tips:
- Implementeer vertragingen of simulaties voor realistische workflow.
- Voeg logs toe voor elke stap om fouten te traceren.
- Gebruik een tijdelijke opslag (bijvoorbeeld een in-memory database) om de status en gegevens te beheren.
Door deze structuur te volgen, creëer je een flexibele en uitgebreide nep-API voor het simuleren van een bestelproces met meerdere stappen en foutafhandeling.
provider: deepseek
model: deepseek-chat
Hier is een ontwerp voor een nep-API die een bestelproces workflow simuleert:
## API Ontwerp: Bestelproces Workflow
### Basis Structuur
```json
{
"workflow": "bestelproces",
"version": "1.0",
"endpoints": [
"/createOrder",
"/processPayment",
"/updateInventory",
"/sendConfirmation"
]
}
```
### Eindpunten Specificatie
#### 1. POST /createOrder
**Request:**
```json
{
"customerId": "string",
"items": [
{
"productId": "string",
"quantity": "number",
"price": "number"
}
],
"shippingAddress": "object"
}
```
**Success Response (201):**
```json
{
"orderId": "uuid",
"status": "created",
"totalAmount": "number",
"nextStep": "/processPayment",
"workflowToken": "jwt-token"
}
```
**Error Responses:**
- `400 Bad Request`: Ongeldige ordergegevens
- `409 Conflict`: Order bestaat al
- `500 Internal Error`: Server fout
#### 2. POST /processPayment
**Request:**
```json
{
"orderId": "uuid",
"paymentMethod": "string",
"amount": "number",
"workflowToken": "jwt-token"
}
```
**Success Response (200):**
```json
{
"paymentId": "uuid",
"status": "processed",
"nextStep": "/updateInventory",
"updatedOrderStatus": "payment_completed"
}
```
**Error Responses:**
- `402 Payment Required`: Betaling mislukt
- `404 Not Found`: Order niet gevonden
- `409 Conflict`: Betaling al verwerkt
### Gegevensstroom Management
#### Workflow Token Structuur
```json
{
"orderId": "uuid",
"currentStep": "string",
"previousSteps": ["string"],
"status": "string",
"expiresAt": "timestamp"
}
```
### Status Management Suggesties
#### 1. State Machine Pattern
```javascript
const orderStates = {
CREATED: 'created',
PAYMENT_PENDING: 'payment_pending',
PAYMENT_COMPLETED: 'payment_completed',
PAYMENT_FAILED: 'payment_failed',
INVENTORY_UPDATED: 'inventory_updated',
CONFIRMED: 'confirmed',
CANCELLED: 'cancelled'
};
```
#### 2. Workflow Coordinator
```python
class OrderWorkflow:
def __init__(self):
self.steps = {
'create': self.create_order,
'payment': self.process_payment,
'inventory': self.update_inventory,
'confirm': self.send_confirmation
}
def execute_workflow(self, initial_data):
current_data = initial_data
for step_name, step_function in self.steps.items():
try:
current_data = step_function(current_data)
except WorkflowError as e:
self.handle_rollback(step_name, e)
break
```
### Foutafhandeling Strategie
#### 1. Retry Mechanism
```yaml
retry_policy:
max_attempts: 3
backoff_multiplier: 2
initial_delay: 1000ms
```
#### 2. Compensating Actions
```json
{
"error": "payment_failed",
"suggested_actions": [
"retry_payment",
"alternative_payment_method",
"cancel_order"
],
"rollback_required": true
}
```
### Aanvullende Eindpunten
#### GET /order/{orderId}/status
```json
{
"orderId": "uuid",
"currentStatus": "string",
"completedSteps": ["string"],
"pendingSteps": ["string"],
"lastUpdated": "timestamp"
}
```
#### POST /cancelOrder
```json
{
"orderId": "uuid",
"reason": "string"
}
```
### Test Data Generatie
```javascript
// Voorbeeld test data
const mockOrder = {
orderId: "ord_12345",
customerId: "cust_67890",
items: [
{ productId: "prod_001", quantity: 2, price: 29.99 }
],
totalAmount: 59.98,
status: "created"
};
```
### Monitoring en Logging
- Gebruik correlation IDs voor request tracing
- Implementeer health checks op `/health`
- Log elke statusovergang voor auditing
Dit ontwerp biedt een robuuste foundation voor het simuleren van multi-stap workflows met uitgebreide foutafhandeling en statusmanagement.

