/mouse

Small, simple, minimal HTTP library written in Scala.

Primary LanguageScalaMIT LicenseMIT

Mouse - HTTP Server + Client Library

mouse Scala version support

Small, simple, and lightweight HTTP server and client library with no dependencies.

Using Postman as a client, the HTTP server responds within 2-3ms, which is faster than many popular alternatives.

Motivation

Other HTTP libraries had the issue of having a large dependency tree and a lot of setup to make even the most basic of endpoints. The Scala ecosystem really needed an easy-to-use and simple library with no fuss, and that's what mouse is!

Our goals:

  • Easy to use
  • Simple to reason about
  • Quick to install
  • Great performance
  • Works from prototype to production

Get Started

In your build.sbt:

libraryDependencies ++= Seq(
  // ...
  "io.github.aliics" %% "mouse" % "0.6.0",
  // ...
)

mouse's layout is very simple, there are only two imports you will need:

import mouse.* // For our Server, Client, etc. 
import mouse.types.* // For our Request, Response, etc.

Setting up a Server is as easy as providing some Routes and a port! Then calling run or runBlocking.

Server(
  routes(
    Method.Get / "hello" / "world" -> greetWorld,
    // ... More routes
  ) *
).runBlocking(port = 8080)

A Client is even easier!

Client("localhost", port = 8080)
  .getBlocking("hello/alex") // GET Request was made, and we awaited the Response.
  .textBlocking() // The body of the response.

All HTTP method helper methods have a "blocking" wrapper for convenience. Generally, you'll want to use the async ones (getBlocking -> get).

Full examples exists in the examples directory.

Contributing

Get your fork and make a pull request! We'll go from there.