* Convert ESP8266WebServer* into templatized model Supercedes #4912 Refactor the three versions of ESP8266WebServer and *WebServerSecure to a single templated class. Use "using" to enable old, non-templated names to b used (so no user changes required to compile or run). Fixes #4908 and clean up the code base a lot. Basic tests run (the ones in the example code). No code changes are required in userland except for setting the SSL certificates which now use a cleaner "getServer()" accessor and lets the app use the native BearSSL calls on the WiFiClientSecure object. @devyte should be proud, it removes virtuals and even has template specialization... * Fix HTTPUpdate templates and examples * Fix HTTPUpdateServer library build Need to remove dot-a linkage since there are no .cpp files in the directory anymore due to templates. * Provide backward-compat names for updt template Allow existing code to use the same well known names for HTTPUpdateSecure. * Remove ClientType from all templates, auto-infer Remove the ClientType template parameter from all objects. Simplifies the code and makes it more foolproof. Add a "using" in each server to define the type of connection returned by all servers, which is then used in the above templates automatically. * Can safely include FS.h now that SD/SPIFFS unified * Move the templates/objects to their own namespaces * Fix merge issues with untemplated methods * Address review comments * Fix mock test, remove warnings inside test dir Make the simple mock test CI job pass and clean up any spurious warnings in the test directory. There still are warnings in the libraries and core, but they should be addressed in a separate PR.
ESP8266 Web Server
The WebServer class found in ESP8266WebServer.h
header,
is a simple web server that knows how to handle HTTP requests such as
GET and POST and can only support one simultaneous client.
Usage
Class Constructor
(80); ESP8266WebServer server
Creates the ESP8266WebServer class object.
Parameters:
host IP address: IPaddress addr
(optional)
host port number: int port
(default is the standard HTTP
port 80)
Basic Operations
Starting the server
void begin();
Handling incoming client requests
void handleClient();
Disabling the server
void close();
void stop();
Both methods function the same
Client request handlers
void on();
void addHandler();
void onNotFound();
void onFileUpload();
Example:
.on("/", handlerFunction);
server.onNotFound(handlerFunction); // called when handler is not assigned
server.onFileUpload(handlerFunction); // handle file uploads server
Sending responses to the client
void send();
void send_P();
Parameters:
code
- HTTP response code, can be 200
or
404
, etc.
content_type
- HTTP content type, like
"text/plain"
or "image/png"
, etc.
content
- actual content body
Advanced Options
Getting information about request arguments
const String & arg();
const String & argName();
int args();
bool hasArg();
arg
- get request argument value
argName
- get request argument name
args
- get arguments count
hasArg
- check if argument exist
Getting information about request headers
const String & header();
const String & headerName();
const String & hostHeader();
int headers();
bool hasHeader();
header
- get request header value
headerName
- get request header name
hostHeader
- get request host header if available, else
empty string
headers
- get header count
hasHeader
- check if header exist
Authentication
bool authenticate();
void requestAuthentication();
authenticate
- server authentication, returns true if
client is authenticated else false
requestAuthentication
- sends authentication failure
response to the client
Example Usage:
if(!server.authenticate(username, password)){
.requestAuthentication();
server}
Other Function Calls
const String & uri(); // get the current uri
(); // get the current method
HTTPMethod method(); // get the current client
WiFiClient client& upload(); // get the current upload
HTTPUpload void setContentLength(); // set content length
void sendHeader(); // send HTTP header
void sendContent(); // send content
void sendContent_P();
void collectHeaders(); // set the request headers to collect
void serveStatic();
size_t streamFile();
For code samples enter here .