Module type
Class type

Server is a HTTP 1.1 server.

The request headers, a reader for the socket, and the address of the client. To read the request body, use read_fixed or read_chunked.

type response = Http.Response.t * Body.t
type handler = request -> response

Request Body

val read_fixed : Http.Request.t -> Eio.Buf_read.t -> string option

read_fixed (request, buf_read) is Some content, where content is of length n if "Content-Length" header is a valid integer value n in request.

buf_read is updated to reflect that n bytes was read.

If "Content-Length" header is missing or is an invalid value in request OR if the request http method is not one of POST, PUT or PATCH, then None is returned.

val read_chunked : Http.Request.t -> Eio.Buf_read.t -> (Body.chunk -> unit) -> Http.Header.t option

read_chunked request buf_read chunk_handler is Some updated_headers if "Transfer-Encoding" header value is "chunked" in request and all chunks in buf_read are read successfully. updated_headers is the updated headers as specified by the chunked encoding algorithm in https: //

buf_read is updated to reflect the number of bytes read. Returns None if Transfer-Encoding header in headers is not specified as "chunked"


val text_response : string -> response

text t s returns a HTTP/1.1, 200 status response with "Content-Type" header set to "text/plain".

val html_response : string -> response

html t s returns a HTTP/1.1, 200 status response with header set to "Content-Type: text/html".

val not_found_response : response

not_found t returns a HTTP/1.1, 404 status response.

val internal_server_error_response : response

internal_server_error returns a HTTP/1.1, 500 status response.

val bad_request_response : response

Run Server

val run : ?socket_backlog:int -> ?domains:int -> port:int -> < domain_mgr : Eio.Domain_manager.t ; net : Eio.Net.t.. > -> handler -> 'a
val connection_handler : handler -> Eio.Net.stream_socket -> -> unit

connection_handler request_handler is a connection handler, suitable for passing to Eio.Net.accept_fork.

Basic Handlers

val not_found_handler : handler