blob: 6e579196c8ab2ce699391837069ab403a9c36d80 [file] [log] [blame] [view]
Paul Hawkeafd33382013-03-11 09:03:11 -05001## What is "nanohttpd"?
elonen03b577b2012-08-10 14:52:42 -07002
Paul Hawkeafd33382013-03-11 09:03:11 -05003*NanoHttpd* is a light-weight HTTP server designed for embedding in other applications.
4
Paul Hawkeafd33382013-03-11 09:03:11 -05005*NanoHttpd* has been released under a Modified BSD licence.
Elonen0587be12012-08-11 02:07:17 +03006
ritchie63fa9f32015-05-08 08:19:39 +02007current build status at https://travis-ci.org [![Build Status](https://api.travis-ci.org/NanoHttpd/nanohttpd.png)](https://travis-ci.org/NanoHttpd/nanohttpd)
8
ritchieb2067792015-05-09 09:38:28 +02009Test Coverage Status [![Coverage Status](https://coveralls.io/repos/NanoHttpd/nanohttpd/badge.svg)](https://coveralls.io/r/NanoHttpd/nanohttpd)
10
Paul Hawkebe092272013-04-21 14:12:18 -050011## Core Features
Paul Hawke41b4b6d2013-07-02 15:29:06 -050012* Only one Java file, providing HTTP 1.1 support.
Philipp Wiesemann92e45dd2014-05-17 23:27:35 +020013* Two "flavours" - one at "current" standards and one strictly Java 1.1 compatible.
Paul Hawkebe092272013-04-21 14:12:18 -050014* Released as open source, free software, under a Modified BSD licence.
15* No fixed config files, logging, authorization etc. (Implement by yourself if you need them.)
Paul Hawke8dd18352013-09-02 17:23:13 -050016* Experimental support for SSL (see the 'ssl-support' branch in git)
17* Basic support for cookies
Paul Hawkea1e2a122013-05-22 09:50:14 -040018* Supports parameter parsing of GET and POST methods.
19* Rudimentary PUT support (added in 1.25).
20* Support for HEAD and DELETE requests.
21* Supports single and multi-value parameters (w/ a helper method) if needed.
22* Supports file upload (since version 1.2, 2010) with minimal memory overhead.
Paul Hawkebe092272013-04-21 14:12:18 -050023* Never caches anything.
24* Doesn't limit bandwidth, request time or simultaneous connections.
Philipp Wiesemann92e45dd2014-05-17 23:27:35 +020025* All header names are converted to lower case so they don't vary between browsers/clients.
Paul Hawkebe092272013-04-21 14:12:18 -050026* Very low memory overhead when processing even the largest of requests.
Philipp Wiesemann92e45dd2014-05-17 23:27:35 +020027* Temp file usage and threading model are easily customized.
Paul Hawked8cc7262013-06-18 17:20:36 -040028* Persistent connections (Connection "keep-alive") support allowing multiple requests to be served over a single socket connection.
Paul Hawkebe092272013-04-21 14:12:18 -050029
Paul Hawkeb891f272014-04-23 23:16:23 -050030## Websocket Support
31* Tested on Firefox, Chrome and IE.
32
Paul Hawkebe092272013-04-21 14:12:18 -050033## Webserver Features
34* Supports both dynamic content and file serving.
35* Default code serves files and shows all HTTP parameters and headers.
36* File server supports directory listing, ```index.html``` and ```index.htm```.
37* File server supports partial content (streaming).
38* File server supports ETags.
39* File server does the 301 redirection trick for directories without ```/```.
40* File server supports simple skipping for files (continue download).
41* File server serves also very long files without memory overhead.
Philipp Wiesemann92e45dd2014-05-17 23:27:35 +020042* Contains a built-in list of most common MIME types.
43* Runtime extension support (extensions that serve particular MIME types) - example extension that serves Markdown formatted files. Simply including an extension JAR in the webserver classpath is enough for the extension to be loaded.
Paul Hawkebe092272013-04-21 14:12:18 -050044
Paul Hawke3c24d712014-04-23 23:48:40 -050045*Thank you to everyone who has reported bugs and suggested fixes.*