Spring Boot 2 REST API#
REST API Controller#
In Spring, a controller class, which is capable of serving REST API requests, is called rest controller. It should be annotated with
@RestController
annotation.The resource uris are specified in
@RequestMapping
annotations. It can be applied at class level and method level both. Complete URI for an API is resolved after adding class level path and method level path.We should always write
produces
andconsumes
attributes to specify the mediatype attributes for the API. Never reply on assumptions.
HTTP GET /employees#
http://localhost:18090/employees/
HTTP POST /employees#
http://localhost:18090/employees/
{
"firstName": "T5750",
"lastName": "T5750",
"email": "T5750@gmail.com"
}
Exception handling#
Results#
HTTP GET /employees/vo/1 [VALID]
HTTP GET /employees/vo/23 [INVALID]
HTTP POST /employees/vo [INVALID]
{ "lastName": "T5750", "email": "T5750@gmail.com" }
HTTP POST /employees/vo [INVALID]
{ "email": "T5750@gmail.com" }
HTTP POST /employees/vo [INVALID]
{ "firstName": "T5750", "email": "T5750_gmail.com" //invalid email in request }
REST request validation annotations#
ANNOTATION | USAGE |
---|---|
@AssertFalse |
The annotated element must be false. |
@AssertTrue |
The annotated element must be true. |
@DecimalMax |
The annotated element must be a number whose value must be lower or equal to the specified maximum. |
@DecimalMin |
The annotated element must be a number whose value must be higher or equal to the specified minimum. |
@Future |
The annotated element must be an instant, date or time in the future. |
@Max |
The annotated element must be a number whose value must be lower or equal to the specified maximum. |
@Min |
The annotated element must be a number whose value must be higher or equal to the specified minimum. |
@Negative |
The annotated element must be a strictly negative number. |
@NotBlank |
The annotated element must not be null and must contain at least one non-whitespace character. |
@NotEmpty |
The annotated element must not be null nor empty. |
@NotNull |
The annotated element must not be null. |
@Null |
The annotated element must be null. |
@Pattern |
The annotated CharSequence must match the specified regular expression. |
@Positive |
The annotated element must be a strictly positive number. |
@Size |
The annotated element size must be between the specified boundaries (included). |