Skip to content
jpbetz edited this page Dec 18, 2012 · 19 revisions

Home

What is Pegasus?

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

Pegasus 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 Pegasus?

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

Basically, pegasus is a framework where you define schema's 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, Message> {
  public Greeting get(Long key) {
    return new Greeting().setMessage("Good morning!");
  }
}

And then write clients:

Response<Greeting> response = restClient.sendRequest(new GreetingsBuilders.get().id(1L).build()).get();
System.out.println(response.getEntity().getMessage());

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

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.2+

Documentation