Maple is an ultra-lightweight RESTful web server built specifically for network enabled Netduino devices. It's fully .NET MicroFramework 4.3 compatible and provides an easy to extend architecture.
Clone or download
lamebrain Merge pull request #6 from WildernessLabs/Maple_data_output_fix
[Maple] No longer disposing HttpListenerContext Response OutputStream
Latest commit 26b9a7d Jul 14, 2018


Maple is an ultra-lightweight RESTful web server built specifically for network enabled Netduino devices. It's fully .NET MicroFramework 4.3 compatible, provides an easy to extend architecture, and has native JSON support.

Adding Maple to your Project

Maple is published via Nuget. To add to your project, search nuget for Maple, or install from the command line package manager:

PM> Install-Package maple

Creating an Endpoint

To create an API endpoint create a class that inherits from RequestHandlerBase:

public class RequestHandler : RequestHandlerBase
    public RequestHandler(HttpListenerContext context) : base(context)

    public void getDoSomething()
        this.Context.Response.ContentType = "application/json";
        this.Context.Response.StatusCode = 200;
        Hashtable result = new Hashtable { { "message", "hello world!" } };

Method Naming

Maple uses reflection to create urls based on the method names in your custom RequestHandler. So for example, the getDoSomething method above maps to a GET request handler at http://[NetduinoAddress]/DoSomething.

Currently, Maple supports Get and Post verbs.

Starting the Server

In order for Maple to run, you must start the server before it will run. To start the server, instantiate a new MapleServer object, and call the Start method:

MapleServer server = new MapleServer();

Query String and Form Post Parameters

Maple parses query string and form post parameters during requests and makes them available via the QueryString or Form hashtable, respectively.

For example to pass an ID parameter to the DoSomething handler, append ?ID=[value] to the request:


The getDoSomething method can then access the ID parameter via:

var id = base.QueryString["ID"];

Similarly, a form post field of ID can be accessed via the Form object:

var id = base.Form["ID"];

Configuring the Network Interface

Maple assumes that the network interface of the Netduino is already initialized and it has an IP address. For example code to do this, see the sample application below. For more information, see the Network documentation on

Sample Application

See the ApplianceHost application for a full sample application using Maple.

Building the Nuget Package

To build the nuget package, run the following command from a terminal or command line window:

nuget pack Maple.csproj -Prop Configuration=Release -Prop Platform=AnyCPU


Maple is licensed under the Apache 2 license.