Still Under Development
You can run the application using Maven wrapper
$ ./mvnw clean spring-boot:run
Installed Maven
$ mvn clean spring-boot:run
Or using the 'Run' command of your IDE.
GET Request:
http://{host}/employees/1
JSON Response:
{
"id": 1,
"name": "Bilbo Baggins",
"role": "burglar",
"_links": {
"self": {
"href": "http://localhost:8080/employees/1"
},
"employees": {
"href": "http://localhost:8080/employees"
}
}
}
The interface ResourceAssembler
, helps to implement HATEOAS using links and the HAL format.
@Component
public class EmployeeResourceAssembler implements ResourceAssembler<Employee, Resource<Employee>> {
@Override
public Resource<Employee> toResource(Employee employee) {
return new Resource<Employee>(employee,
linkTo(methodOn(EmployeeController.class).one(employee.getId())).withSelfRel(),
linkTo(methodOn(EmployeeController.class).all()).withRel("employee")
);
}
}
Me:
References:
- Chapter 5: Representational State Transfer (REST) - Roy Fielding
- JSON Hypertext Application Language - HAL
- RFC 8259 - JSON
- REST APIs must be hypertext-driven
- 4 Maturity Levels of REST API Design
- Building REST services with Spring
- Caching Data with Spring
- OpenAPI Specification
- Setting Up Swagger 2 with a Spring REST API