Core concepts

The main objective of YAWP! is to help developers to create simple, elegant and powerful web APIs.

Endpoint Models

In the center of everything are the Endpoint Models. More precisely, they are Active Web Documents:

Endpoint models are really easy to create. The simplest example, used almost everywhere in this documentation, is the Person endpoint:

@Endpoint(path = "/people")
public class Person {
    @Id
    IdRef<Person> id;
    String name;
}

This is the only configuration needed to create the Person endpoint model, which by default gives you the repository actions with a complete set of Web APIs to access it:

Verb Path Action
GET /people List people
POST /people Create a person
GET /people/{id} Show a person
PUT/PATCH /people/{id} Update a person
DELETE /people/{id} Destroy a person

Endpoint Features

The default rest repository can be extended with custom business logic and this is done by means of extending a set of APIs known as Endpoint Features. They were carefully selected to organize specific responsibilities together:

Static Typed over a Schemaless Persistence Layer

We’ve selected Java as the core language of YAWP! because it is static typed at the compile time. The main idea is to have a explicit and well organized place to declare your models structure. Since we are working over a schemaless persistence layer this setup can be very powerful, mixing flexibility and stability.