# hyper [![Travis Build Status](https://travis-ci.org/hyperium/hyper.svg?branch=master)](https://travis-ci.org/hyperium/hyper) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/tb0n55fjs5tohdfo/branch/master?svg=true)](https://ci.appveyor.com/project/seanmonstar/hyper) [![Coverage Status](https://coveralls.io/repos/hyperium/hyper/badge.svg?branch=master)](https://coveralls.io/r/hyperium/hyper?branch=master) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) [![crates.io](http://meritbadge.herokuapp.com/hyper)](https://crates.io/crates/hyper) A Modern HTTP library for Rust. [Documentation](http://hyperium.github.io/hyper) ## Overview Hyper is a fast, modern HTTP implementation written in and for Rust. It is a low-level typesafe abstraction over raw HTTP, providing an elegant layer over "stringly-typed" HTTP. Hyper offers both an HTTP/S client and HTTP server which can be used to drive complex web applications written entirely in Rust. The documentation is located at [http://hyperium.github.io/hyper](http://hyperium.github.io/hyper). ## Example ### Hello World Server: ```rust extern crate hyper; use hyper::Server; use hyper::server::Request; use hyper::server::Response; fn hello(_: Request, res: Response) { res.send(b"Hello World!").unwrap(); } fn main() { Server::http("127.0.0.1:3000").unwrap().handle(hello); } ``` ### Client: ```rust extern crate hyper; use std::io::Read; use hyper::Client; use hyper::header::Connection; fn main() { // Create a client. let mut client = Client::new(); // Creating an outgoing request. let mut res = client.get("http://rust-lang.org/") // set a header .header(Connection::close()) // let 'er go! .send().unwrap(); // Read the Response. let mut body = String::new(); res.read_to_string(&mut body).unwrap(); println!("Response: {}", body); } ```