ToastShaman / tiny-http-router

Tiny (no-dependencies) HTTP router library.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tiny-http-router

Tiny (no-dependencies) HTTP router library.

Example usage with AWS Lambda.

public class MyLambda implements RequestHandler<APIGatewayV2HTTPEvent, APIGatewayV2HTTPResponse> {
    private final Gson gson = new Gson();

    private final Router router = Router.newRouter()
            .Use(next -> (w, r) -> {
                w.header().set("Content-Type", "application/json");
                next.handle(w, r);
            })
            .Get("/hello/{name}", (w, r) -> {
                var name = r.context().require("name");
                w.write(gson.toJson(Map.of("message", "hello %s".formatted(name))));
                w.writeHeader(200);
            })
            .Post("/hello/{name}/create", (w, r) -> {
                var name = r.context().require("name");
                var body = r.body();
                w.write(gson.toJson(Map.of("message", "accepted")));
                w.writeHeader(201);
            }).Route("/world", s -> {
                s.Patch("/{id:[0-9]+}", (w, r) -> {
                    var id = r.context().require("id");
                    w.write(gson.toJson(Map.of("message", "accepted %s".formatted(id))));
                    w.writeHeader(201);
                });
            });

    @Override
    public APIGatewayV2HTTPResponse handleRequest(APIGatewayV2HTTPEvent input, Context context) {
        var request = new APIGatewayV2HTTPEventWrapper(input, context);
        var writer = new APIGatewayResponseWriter();
        router.handle(writer, request);
        return writer.build();
    }
}

About

Tiny (no-dependencies) HTTP router library.

License:The Unlicense


Languages

Language:Java 97.7%Language:Kotlin 2.3%