ESP32 REST API Server met JSON - Complete Handleiding
WebServerJson Voorbeeld - REST API Server
Overzicht
Dit voorbeeld toont hoe u een REST API server maakt op de ESP32 die JSON-requests en -responses verwerkt, perfect voor moderne webapplicaties en backend van mobiele apps.
Functies
- REST API endpoints met JSON request/response verwerking
- POST request verwerking met JSON data parsing
- GET endpoints voor gegevensopvraging
- Professionele JSON responses met correcte HTTP statuscodes
- Foutafhandeling met passende JSON foutmeldingen
- CORS ondersteuning voor cross-origin requests
Benodigde Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Bibliotheek Installatie
Volg deze instructies stap voor stap:
- Als u voor het eerst met de ESP32 werkt, raadpleeg dan de tutorial over het instellen van de ESP32 omgeving in de Arduino IDE.
- Verbind de ESP32 via USB-kabel met uw computer.
- Start de Arduino IDE op uw computer.
- Selecteer de juiste ESP32 board (bijvoorbeeld ESP32) en juiste COM-poort.
- Open de Library Manager door te klikken op het Library Manager icoon aan de linkerkant van de Arduino IDE.
- Zoek op Web Server for ESP32 en selecteer mWebSockets van DIYables.
- Klik op de Installeren-knop om de mWebSockets bibliotheek toe te voegen.

Web Server Json Voorbeeld
- In de Arduino IDE, ga naar Bestand Voorbeelden Web Server for ESP32 WebServerJson om de voorbeeldcode te openen
API Endpoints
GET /api/data
Retourneert een succesbericht met timestamp in JSON-formaat.
Response:
De timestamp geeft milliseconden aan sinds het opstarten van de ESP32 (via de functie millis()).
POST /api/data
Accepteert JSON data en retourneert de ontvangen key-waarde.
Request:
Response:
Installatie-instructies
1. Netwerkconfiguratie
Pas de WiFi-gegevens aan in het bestand WebServerJson.ino:
2. Upload Code en Monitor Output
- Verbind uw ESP32 met de computer
- Selecteer het juiste board en poort in de Arduino IDE
- Upload de sketch WebServerJson.ino
- Open de Seriële Monitor (9600 baud)
- Wacht op de WiFi-verbinding
- Noteer het weergegeven IP-adres
- Als u het IP-adres niet ziet, druk dan op de resetknop van de ESP32
Gebruik
Testen met cURL
Vervang your-esp32-ip door het daadwerkelijke IP-adres dat wordt weergegeven in uw Seriële Monitor.
Test GET Request
Verwachte Output:
De timestamp geeft milliseconden sinds het opstarten van de ESP32 weer.
Test POST Request met JSON Data
Verwachte Output:
Test POST Request met andere Data
Verwachte Output:
Test Ongeldige JSON (Foutresponse)
Verwachte Output:
Test Ontbrekende JSON Body (Foutresponse)
Verwachte Output:
Test Niet-ondersteunde Methode (Foutresponse)
Verwachte Output:
Test Niet-bestaande Endpoint (404 Fout)
Verwachte Output:
Testen met Postman
Test GET Request
- Maak een nieuwe GET-aanvraag aan
- Stel de URL in op http://your-esp32-ip/api/data
- Verstuur de aanvraag
- Controleer of de response status, message en timestamp bevat
Test POST Request
- Maak een nieuwe POST-aanvraag aan
- Stel de URL in op http://your-esp32-ip/api/data
- Voeg header toe: Content-Type: application/json
- Voeg JSON-body toe: {"key": "test_value"}
- Verstuur de aanvraag
- Controleer of de response de ontvangen key-waarde toont
Testen van Foutresponses
Test de foutafhandeling door ongeldige requests te sturen zoals in de voorbeeldcode:
Ontbrekende JSON Data
Verwacht: {"status": "error","message": "No JSON data received"}
Ongeldige JSON Syntax
Verwacht: {"status": "error","message": "Invalid JSON"}
Ontbrekend Key-veld
Verwacht: De key krijgt standaardwaarde "none" volgens de voorbeeldcode: doc["key"] | "none"
Niet-ondersteunde HTTP Methode
Verwacht: {"status": "error","message": "Method not allowed"}
Code Uitleg
Route Configuratie
Handler Functiesignatuur
Alle handlerfuncties volgen deze handtekening:
Methode Detectie en JSON Verwerking
Integratievoorbeelden
JavaScript Frontend
Python Client
LED bedienen
Status ophalen
Gebruik
Foutafhandeling
HTTP Statuscodes
- 200: Succes
- 400: Bad Request (ongeldige JSON, ontbrekende parameters)
- 404: Endpoint niet gevonden
- 405: Methode niet toegestaan
- 500: Interne serverfout
Foutresponse Formaat
Gebaseerd op de voorbeeldcode worden specifieke foutmeldingen als volgt teruggegeven:
Fout bij Ontbrekende JSON Data
Teruggegeven wanneer: een POST request wordt verzonden zonder JSON body
Fout bij Ongeldige JSON Syntax
Teruggegeven wanneer: JSON data niet geparsed kan worden (syntaxfouten)
Fout bij Methode Niet Toegestaan
Teruggegeven wanneer: gebruik van niet-ondersteunde HTTP methoden (PUT, DELETE, PATCH, etc.)
404 Niet Gevonden Fout
Teruggegeven wanneer: niet-bestaande endpoints worden opgevraagd
Aanpassingen
Nieuwe Handler Functies Toevoegen
Template-gebaseerde JSON Responses
Het voorbeeld maakt gebruik van templatestrings voor consistente JSON-formattering:
Probleemoplossing
Veelvoorkomende Problemen
Verbindingsproblemen
Als u geen verbinding kunt maken met de API endpoints:
- Controleer of uw ESP32 verbonden is met WiFi (via Seriële Monitor)
- Zorg dat client en ESP32 op hetzelfde netwerk zitten
- Controleer of het IP-adres correct is
- Controleer of de ESP32 niet is gereset (anders verandert IP)
JSON Parsing Fouten
Als u "Invalid JSON" meldingen krijgt:
- Zorg dat de header Content-Type op application/json staat
- Controleer of uw JSON-syntax geldig is
- Let op correcte escaping van speciale tekens
- Zorg dat de JSON payload niet groter is dan de limiet (nu 200 bytes)
POST Request Problemen
Als POST requests "No JSON data received" teruggeven:
- Stuur een geldige JSON body mee
- Controleer dat de Content-Length header klopt
- Verifieer dat de HTTP-methode daadwerkelijk POST is
- Test met een eenvoudige JSON zoals {"key": "test"}
Geheugenproblemen
Als de ESP32 niet meer reageert:
- Houd het geheugengebruik in de gaten - StaticJsonDocument gebruikt 200 bytes
- Verklein indien nodig de JSON_RESPONSE template
- Overweeg DynamicJsonDocument voor variabele JSON-grootte
- Controleer op geheugenlekken in eigen handlerfuncties
Prestatie Tips
JSON Verwerking Optimaliseren
Efficiënte Response Verwerking
Volgende Stappen
- Verken WebServerQueryStrings.ino voor URL parameter handling
- Probeer WebServerWithWebSocket.ino voor real-time communicatie
- Overweeg integratie met databases of cloud diensten