Voorbeeld 1: Eenvoudige Webshop
In dit voorbeeld maken we een eenvoudige webshop API met de volgende collecties:
- Products: een collectie van producten met eigenschappen zoals naam, prijs, voorraad en categorie
- Categories: een collectie van productcategorieën die helpt bij het organiseren van producten
- Orders: een collectie van bestellingen geplaatst door gebruikers
- OrderItems: een collectie van individuele items binnen een bestelling, met referenties naar producten
Volledige JSON-configuratie
{ "collections": [ { "name": "products", "fields": [ { "name": "id", "type": "number", "required": true }, { "name": "name", "type": "string", "required": true, "min": 2, "Max": 100 }, { "name": "description", "type": "string", "Max": 1000 }, { "name": "price", "type": "number", "required": true, "min": 0, "default": 0 }, { "name": "stock", "type": "number", "required": true, "min": 0, "default": 0 }, { "name": "categoryId", "type": "reference:categories", "required": true }, { "name": "imageUrl", "type": "string", "Max": 255 } ], "permissions": { "GET": ["anonymous", "user", "admin"], "POST": ["admin"], "PUT": ["admin"], "DELETE": ["admin"] } }, { "name": "categories", "fields": [ { "name": "id", "type": "number", "required": true }, { "name": "name", "type": "string", "required": true, "min": 2, "Max": 50 }, { "name": "description", "type": "string", "Max": 500 } ], "permissions": { "GET": ["anonymous", "user", "admin"], "POST": ["admin"], "PUT": ["admin"], "DELETE": ["admin"] } }, { "name": "orders", "fields": [ { "name": "id", "type": "number", "required": true }, { "name": "userId", "type": "reference:users", "required": true }, { "name": "orderDate", "type": "date", "required": true, "default": "CurrentDate" }, { "name": "status", "type": "string", "required": true, "default": "pending" }, { "name": "total", "type": "number", "required": true, "min": 0, "default": 0 } ], "permissions": { "GET": ["user", "admin"], "POST": ["user"], "PUT": ["admin"], "DELETE": ["admin"] } }, { "name": "orderItems", "fields": [ { "name": "id", "type": "number", "required": true }, { "name": "orderId", "type": "reference:orders", "required": true }, { "name": "productId", "type": "reference:products", "required": true }, { "name": "quantity", "type": "number", "required": true, "min": 1, "default": 1 }, { "name": "unitPrice", "type": "number", "required": true, "min": 0 } ], "permissions": { "GET": ["user", "admin"], "POST": ["user"], "PUT": ["admin"], "DELETE": ["admin"] } } ], "users": [ { "email": "[email protected]", "password": "admin123", "roles": ["admin"] }, { "email": "[email protected]", "password": "klant123", "roles": ["user"] } ], "data": { "categories": [ { "id": 1, "name": "Elektronica", "description": "Elektronische apparaten en gadgets" }, { "id": 2, "name": "Boeken", "description": "Diverse boeken en e-books" }, { "id": 3, "name": "Kleding", "description": "Mode en accessoires" } ], "products": [ { "id": 1, "name": "Smartphone", "description": "High-end smartphone met topfuncties", "price": 499.99, "stock": 50, "categoryId": 1, "imageUrl": "/images/smartphone.jpg" }, { "id": 2, "name": "Laptop", "description": "Krachtige laptop voor werk en gaming", "price": 899.99, "stock": 25, "categoryId": 1, "imageUrl": "/images/laptop.jpg" }, { "id": 3, "name": "Programmeren voor beginners", "description": "Leer de basis van programmeren", "price": 29.99, "stock": 100, "categoryId": 2, "imageUrl": "/images/programming-book.jpg" }, { "id": 4, "name": "T-shirt", "description": "Casual t-shirt in verschillende kleuren", "price": 19.99, "stock": 200, "categoryId": 3, "imageUrl": "/images/tshirt.jpg" } ], "orders": [], "orderItems": [] } }
Belangrijkste kenmerken
- Producten en categorieën zijn publiekelijk zichtbaar (anonymous toegang)
- Bestellingen zijn alleen zichtbaar voor de gebruiker zelf en beheerders
- Alleen beheerders kunnen producten en categorieën toevoegen of wijzigen
- Gebruikers kunnen bestellingen plaatsen
- De API ondersteunt CRUD-operaties voor alle collecties