REST

PATH organization:

GET - /app-name (or main entity name)/ - list of all
GET - /app-name/id - list of 1
POST- /app-name/ - Add entity
DELETE-/app-name/id - delete entity

App structure:

Class - Entity
Class - EntityDTO - Optional
Class - EntityRepository (extends JpaRepository) - communicate with DB / OR DAO
Class - EntityController
Class - EntityServiceApplication - SpringBootApplication

Validation:

POST: Add constrains in entity (@Max, @Min, @Size), add @Valid - for @RequestBody
GET: Add @Validated for controller class, add constrains for @PathVariable

@PathVariable(required = false) - for optional

How to pass and validate dates?

To Pass:
1. Convert Date Parameters on Request Level
@RequestParam("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date date
@RequestParam("date") @DateTimeFormat(pattern = "dd.MM.yyyy") Date date

2. Configure Date-Time in Properties File
spring.mvc.format.date=yyyy-MM-dd
spring.mvc.format.date-time=yyyy-MM-dd HH:mm:ss
spring.mvc.format.time=HH:mm:ss
OR
spring.mvc.format.date-time=iso