Crate micro_http_server[][src]

Micro HTTP Server

The micro HTTP server - may also be called µHTTP - is a small asynchronous HTTP server implementation without Futures or any other overly complicated stuff; therefore, it is ideal for quick prototyping or API-like requests (e.g. exchaning JSON data).

µHTTP does not support any kind of load balancing or threading - you would have to implement this yourself if you want it.

At the moment, µHTTP only supports GET requests; if you need PUT/POST/ etc., feel free to create an issue or a pull request!

Example

use std::{io::{Read,Write},net::TcpStream};
use micro_http_server::MicroHTTP;

// Create a server on 127.0.0.1:3000.
let server = MicroHTTP::new("127.0.0.1:3000").expect("Could not create server.");
println!("[Server] Waiting for a client @ 127.0.0.1:3000...");

// Client side: Connect to it and request a file.
let mut connection = TcpStream::connect("127.0.0.1:3000")
    .expect("Could not reach server");
println!("[Client] Connected! - Requesting /cat.txt...");
connection.write("GET /cat.txt\r\n\r\n".as_bytes());

{
    // Server side: Get client and send a response.
    let mut client = server.next_client().unwrap().unwrap();
    println!("[Server] Client requested: {}", client.request().as_ref().unwrap());
    let bytes_written = client.respond_ok("Cats are nice.\n".as_bytes()).unwrap();
    println!("[Server] Sent {} bytes to the client.", bytes_written);
} // client is dropped here to close the TcpStream.

// Client side: Read response
let mut buf = String::new();
connection.read_to_string(&mut buf);
println!("[Client] Content of cat.txt: {}", buf);

Structs

Client

This struct represents a client which has connected to the µHTTP server.microhttp

MicroHTTP

This is the main struct of the µHTTP server.