https://github.com/katsutedev/simplehttpserver
simplehttpserver5 - A simple and efficient HTTP server for Java
https://github.com/katsutedev/simplehttpserver
http-server http-server-handler http-server-library http-server-middleware https-server httpserver java lib library simplehttpserver webserver website
Last synced: 3 months ago
JSON representation
simplehttpserver5 - A simple and efficient HTTP server for Java
- Host: GitHub
- URL: https://github.com/katsutedev/simplehttpserver
- Owner: KatsuteDev
- License: gpl-2.0
- Created: 2022-06-07T01:40:54.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-22T10:46:23.000Z (over 1 year ago)
- Last Synced: 2024-04-22T11:55:15.532Z (over 1 year ago)
- Topics: http-server, http-server-handler, http-server-library, http-server-middleware, https-server, httpserver, java, lib, library, simplehttpserver, webserver, website
- Language: Java
- Homepage: https://katsute.dev/product/simplehttpserver5
- Size: 1.86 MB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
> ⚠️ simplehttpserver5 is not compatible with any previous version of [simplehttpserver](https://github.com/Ktt-Development/simplehttpserver).
Simplified httpserver experience for Java 8. Includes extensible servers and handlers for complex operations.
## Installation
This library requires at least Java 8. No additional dependencies are required.
Compiled binaries can be installed from:
* [Maven Central](https://mvnrepository.com/artifact/dev.katsute/simplehttpserver)
* [GitHub Packages](https://github.com/KatsuteDev/simplehttpserver/packages/1569580)
* [Releases](https://github.com/KatsuteDev/simplehttpserver/releases)Refer to the [documentation](https://docs.katsute.dev/simplehttpserver) to learn how to use servers and handlers.
## Features
### Complicated tasks made easy
Simplified exchange methods for:
* Parsing `GET`/`POST` requests, including `multipart/form-data` support.
* Accessing cookies.
* Sending byte arrays, strings, and files to clients.
* Sending gzip compressed responses.```java
SimpleHttpHandler handler = new SimpleHttpHandler(){
@Override
public void handle(SimpleHttpExchange exchange){
Map POST = exchange.getPostMap();
MultipartFormData form = exchange.getMultipartFormData();
Record record = form.getRecord("record");
FileRecord file = form.getRecord("file").asFile();
exchange.send(new File("OK.png"), true);
}
};
```### More Features
Features not included with a regular HTTP server:
* Cookies
* Sessions
* Multithreaded Servers```java
SimpleHttpServer server = new SimpleHttpServer(8080);
server.setHttpSessionHandler(new HttpSessionHandler());
SimpleHttpHandler handler = new SimpleHttpHandler(){
@Override
public void handle(SimpleHttpExchange exchange){
HttpSession session = server.getHttpSession(exchange);
String session_id = session.getSessionID();
Map cookies = exchange.getCookies();
exchange.close();
}
};
```### Simplified Handlers
Simple and extensible request handlers:
* Redirect Handler
* Predicate Handler
* Root `/` Handler
* File Handler
* Server-Sent-Events (SSE) Handler
* Temporary Handler
* Timeout Handler
* Throttled Handler```java
RedirectHandler redirect = new RedirectHandler("https://github.com/");
FileHandler fileHandler = new FileHandler();
fileHandler.addFile(new File("index.html"));
fileHandler.addDirectory(new File("/site"));
SSEHandler SSE = new SSEHandler();
SSE.push("Server sent events!");
ThrottledHandler throttled = new ThrottledHandler(new ServerExchangeThrottler(), new HttpHandler());
```## Contributing
#### Running Tests Locally
For local tests you can use Java 8+, however only methods in the Java 8 API may be used. The `src/main/java9` folder should not be marked as a source root.
#### Running Tests using GitHub Actions
Each commit automatically triggers the Java CI workflow, make sure you have actions enabled on your forks.
##
This library is released under the [GNU General Public License (GPL) v2.0](https://github.com/KatsuteDev/simplehttpserver/blob/main/LICENSE).