Home

Awesome

Build Status

hunt-http

Hunt-Http is a flexible performant http server and client written in D Programming Language.

Features

FeatureServerClient
HTTP 1.xtestedtested
HTTP/2testedtested
TLS 1.2testedtested[1]
WebSocket[2]testedtested
Routingtestednone
Cookietestedtested[3]
Sessiontested[4]tested
Form-Data[5]testedtested
X-WWW-Formtestedtested

Note:

[1] Mutual TLS supported <br> [2] WSS untested<br> [3] In-memory only<br> [4] In-memory only<br> [5] File upload and download<br>

Simple codes

Using hunt-http build a web server

import hunt.http;

void main()
{
    auto server = HttpServer.builder()
        .setListener(8080, "0.0.0.0")
        .setHandler((RoutingContext context) {
            context.write("Hello World!");
            context.end();
        }).build();

    server.start();
}

Using hunt-http build a http client

import hunt.http;

import std.stdio;

void main()
{
    auto client = new HttpClient();

    auto request = new RequestBuilder().url("http://www.huntlabs.net").build();

    auto response = client.newCall(request).execute();

    if (response !is null)
    {
        writeln(response.getBody().asString());
    }
}

Using hunt-http build a websocket server

import hunt.http;

void main()
{
    auto server = HttpServer.builder()
        .setListener(8080, "0.0.0.0")
        .websocket("/ws", new class AbstractWebSocketMessageHandler {
            override void onText(WebSocketConnection connection, string text)
            {
                connection.sendText("Hello " ~ text);
            }
        }).build()

    server.start();
}

Avaliable versions

NameDescription
HUNT_HTTP_DEBUGUsed to log debug messages about Hunt-HTTP
HUNT_METRICUsed to enable some operations and APIs about metric

TODO

References