Hunt-Http is a flexible performant http server and client. Support HTTP/1.1, HTTP/2, WebSocket and static resource.


Keywords
http-client, http-protocol, http-server, http2, hunt, websocket
License
Apache-2.0
Install
dub fetch hunt-http --version 0.8.2

Documentation

Build Status

hunt-http

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

Features

Feature Server Client
HTTP 1.x tested tested
HTTP/2 tested tested
TLS 1.2 tested tested[1]
WebSocket[2] tested tested
Routing tested none
Cookie tested tested[3]
Session tested[4] tested
Form-Data[5] tested tested
X-WWW-Form tested tested

Note:

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

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

Name Description
HUNT_HTTP_DEBUG Used to log debug messages about Hunt-HTTP
HUNT_METRIC Used to enable some operations and APIs about metric

TODO

  • Reorganizing modules
  • PersistentCookieStore for HttpClient
  • Benchmark

References