forked from linkedin/rest.li
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
jpbetz edited this page Dec 18, 2012
·
19 revisions
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.
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.
- 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
- Java 1.6+
- Gradle 1.2+
-
Rest.li
- Server
- Client
- Projections
- Tools
- Data Schema and Templates
- Dynamic Discovery (D2)
- Request/Response (R2)
- FAQs
- How to Contribute
- Dynamic Discovery (D2)
- Data Schema and Templates
-
Rest.li
- Server
- Client
- Projections
- Tools
- FAQs