Automorph

Documentation API Artifacts Scala License Build

Automorph is a Scala RPC client and server library for invoking and exposing remote APIs in a few lines of code.

Features

Example

// Define a remote API
trait Api:
  def hello(n: Int): Future[String]

// Create server implementation of the remote API
val service = new Api:
  def hello(n: Int): Future[String] = Future(s"Hello world $n")

// Expose a server API implementation to be called remotely
val apiServer = server.bind(service)

// Create a type-safe local proxy for the remote API from an API trait
val remoteApi = client.bind[Api]

// Call the remote API function via the local proxy
remoteApi.hello(1)

// Call the remote API function dynamically without using the API trait
client.call[String]("hello")("n" -> 1)

Note: Mundane parts of the code are omitted and can be found in the full example.

Links