Skip to content

Server side minimalistic HTTP protocol implementation for the Arduino platform.

License

Notifications You must be signed in to change notification settings

n1ywb/ArduinoHttpServer

 
 

Repository files navigation

ArduinoHttpServer

Build Status Code Climate Test Coverage

Server side minimalistic Object Oriented HTTP protocol implementation for the Arduino platform.

ArduinoHttpServer is a simple HTTP request and reply implementation targeted for the embedded Arduino framework. The implementation parses an HTTP request/reply reading/printing from/to any Stream (either Serial or Wifi/Ethernet).

What you do with the request or what you reply is entirely up to your imagination. Very little implicit behaviour.

Quick start

Reading an HTTP request from some Stream instance

// This example uses the Stream instance Serial, might also be a WifiClient object.
// Reserve 511 bytes for body content storage.
ArduinoHttpServer::StreamHttpRequest<511> httpRequest(Serial);
bool success(httpRequest.readRequest())
if (success) // If no HTTP parsing error or read timeout occurred.
{
   // See interface api for other methods.
   const char *body( httpRequest.getBody() );
   // Retrieve 4th part (index is zero based) of the resource URL.
   // E.g. state from: "/api/sensors/1/state"
   const String& restFunction( httpRequest.getResource()[3] );
}

Writing an HTTP reply to some Stream

ArduinoHttpServer::StreamHttpReply httpReply(Serial, "application/json");
httpReply.send("{\"All your base are belong to us!\"}");

Documentation

Documentation available in the ArduinoHttpServer Github wiki

Characteristics

  • HTTP parser with protocol validation.
  • Puts you in control on how to react on a HTTP request; no implicit behaviour.
  • Customizable memory footprint for caching returned body data.
  • No external dependencies outside of the standard Arduino framework.
  • Object oriented implementation.

About

Server side minimalistic HTTP protocol implementation for the Arduino platform.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 97.8%
  • C 2.2%