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.
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
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!" } };
this.Send(result);
}
}
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.
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();
server.Start();
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:
http://[NetduinoAddress]/DoSomething?id=298
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"];
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 developer.wildernesslabs.co.
See the ApplianceHost application for a full sample application using Maple.
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.