Skip to main content

Posts

Showing posts from January 6, 2018

REST tutorial : validations

Greetings! Our API is all good but it currently accepts empty Todos. Let's fix that with validations. You can find the complete source code here Todoapp Hibernate Validator Hibernate Validator allows to express and validate application constraints. Implements JSR 380 bean validation api. Hibernate validator is entirely separate from the persistence aspects of Hibernate. http://hibernate.org/validator/ Hibernate Validator 6.0 is the Reference Implementation of the Bean Validation 2.0 specification. Steps: Update gradle compile('javax.validation:validation-api:2.0.1.Final') compile('org.hibernate:hibernate-validator:6.0.7.Final') Update controller method to add @Valid check Update TodoDto with validators Catch validation exception in global exception handler (MethodArgumentNotValidException) Useful annotations @Length(min=, max=) - check if the string length match the range @Max(value=) - check if the value is less than or equals to max @Min(

REST tutorial : error handling

Greetings! So far we have neglected error scenarios in our API. Any application without proper error handling is a disaster. You can find the complete source code here Todoapp Try these URLs and see the output. http://localhost:8080/todoss http://localhost:8080/todos/abcd Spring has handled errors for us!! but the messages are not interesting enough. Global exception handling With Spring's @ControllerAdvice we can handle exception globally.  ResponseEntityExceptionHandler : A convenient base class for @ControllerAdvice classes that wish to provide centralized exception handling across all @RequestMapping methods through @ExceptionHandler methods.  @RestControllerAdvice is a new feature of Spring Framework 4.3, an annotation with combined @ControllerAdvice + @ResponseBody Enable spring.mvc.throw-exception-if-no-handler-found to customize 404 error Note that our TodoService is also updated to throw a custom exception. See the complete code in error-handling b