This example provides a minimal HTTP server that answers Hello World
using the ESP-IDF HTTP server library.
The following code is the HTTP server utility class:
#include <esp_http_server.h> /** * HTTP server. * Works with ESP-IDF library internally. * * Usage: * First call http.StartServer() * Then call http.RegisterHandler(...) for all handlers */ class HTTPServer { public: HTTPServer(): conf(HTTPD_DEFAULT_CONFIG()) { } void StartServer() { if (httpd_start(&server, &conf) != ESP_OK) { ESP_LOGE("HTTP server", "Error starting server!"); } } void RegisterHandler(const httpd_uri_t *uri_handler) { httpd_register_uri_handler(this->server, uri_handler); } httpd_handle_t server = nullptr; httpd_config_t conf; };
Use like this:
http.StartServer(); http.RegisterHandler(&rootHandler);
for example with the following handler:
static const httpd_uri_t rootHandler = { .uri = "/", .method = HTTP_GET, .handler = [](httpd_req_t *req) { httpd_resp_set_type(req, "text/html"); httpd_resp_send(req, "<h1>Hello World!</h1>", HTTPD_RESP_USE_STRLEN); return ESP_OK; } };
Full example code:
This example uses Arduino as framework.
#include <Arduino.h> #include <WiFi.h> #include <esp_http_server.h> /** * HTTP server. * Works with ESP-IDF library internally. * * Usage: * First call http.StartServer() * Then call http.RegisterHandler(...) for all handlers */ class HTTPServer { public: HTTPServer(): conf(HTTPD_DEFAULT_CONFIG()) { } void StartServer() { if (httpd_start(&server, &conf) != ESP_OK) { ESP_LOGE("HTTP server", "Error starting server!"); } } void RegisterHandler(const httpd_uri_t *uri_handler) { httpd_register_uri_handler(this->server, uri_handler); } httpd_handle_t server = nullptr; httpd_config_t conf; }; static const httpd_uri_t rootHandler = { .uri = "/", .method = HTTP_GET, .handler = [](httpd_req_t *req) { httpd_resp_set_type(req, "text/html"); httpd_resp_send(req, "<h1>Hello World!</h1>", HTTPD_RESP_USE_STRLEN); return ESP_OK; } }; HTTPServer http; void setup() { Serial.begin(115200); WiFi.begin("MyWifi", "vaiceiShai0phie1cho5sahjeiquez"); // Connect Wifi, restart if not connecting // https://techoverflow.net/2021/01/21/how-to-fix-esp32-not-connecting-to-the-wifi-network/ uint32_t notConnectedCounter = 0; while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.println("Wifi connecting..."); notConnectedCounter++; if(notConnectedCounter > 300) { // Reset board if not connected after 30s Serial.println("Resetting due to Wifi not connecting..."); ESP.restart(); } } Serial.print("Wifi connected, IP address: "); Serial.println(WiFi.localIP()); http.StartServer(); http.RegisterHandler(&rootHandler); } void loop() { // Nothing to do here. delay(1000); }
[env:esp32dev] platform = espressif32 board = esp32dev framework = arduino monitor_speed = 115200