Skip to content
Joe Betz edited this page Feb 14, 2014 · 68 revisions

What is Rest.li?

Rest.li is a REST+JSON framework for building robust, scalable service architectures using dynamic discovery and simple asynchronous APIs.

Rest.li fills a niche for building RESTful service architectures at scale, offering a developer workflow for defining data and REST APIs that promotes uniform interfaces, consistent data modeling, type-safety, and compatibility checked API evolution.

No, Really. What is Rest.li?

Oh, you want to see some code, don't you?

Basically, Rest.li is a framework where you define schemas for your data:

    {
      "name" : "Greeting", "namespace" : "com.example.greetings", "type" : "record",
      "fields" : [
        { "name" : "message", "type" : "string" }
      ]
    }

Write servers:

    @RestLiCollection(name = "greetings")
    class GreetingsResource extends CollectionResourceTemplate<Long, Greeting> {
      public Greeting get(Long key) {
        return new Greeting().setMessage("Good morning!");
      }
    }

And then write clients:

    Greeting response = restClient.sendRequest(new GreetingsBuilders.get().id(1L)).getResponseEntity();
    System.out.println(response.getMessage());

And get all the benefits of a robust, scalable REST+JSON framework.

Twitter Account

Follow us @rest_li

Discussion Group

Linkedin Rest.li Group

Quickstart Guides and Examples

Design Principles

  • Promote uniform interfaces through consistent data modeling and REST conventions
  • Seamlessly integrate a JSON serializable data layer including a data schema language and generated language bindings
  • Provide published interface definitions, generated from server code
  • Make calling services dead simple with generated type-safe client bindings
  • Versioning with automated compatibility checking
  • Simple asynchronous API
  • Dynamic discovery with load balancing

Requirements

  • Java 1.6+
  • Gradle 1.8+

Documentation

Clone this wiki locally