2016-07-08 4 views
0

Spring REST 응용 프로그램에서 작업 중입니다.
이 응용 프로그램에는보기 부분이 아닌 REST 컨트롤러 만 있습니다.

은 내가 위의 예에서 예를
Spring REST 컨트롤러에서 요청 매개 변수의 유효성을 검사하는 방법

@RequestMapping(value = "", params = "from", method = RequestMethod.GET) 
    public List<MealReadingDTO> getAllMealReadingsAfter(@RequestParam(name = "from", required = true) Date fromDate) { 
...... 
...... 
} 

를 들어 @RequestParam

유효성을 검사 할 수 있습니다 방법을 알고 싶어요, 내 목표는 Date을 확인하는 것입니다. 누군가가 잘못된 값을 전달했다고 가정하면 그 상황을 처리 할 수 ​​있어야합니다.
이제는 500 상태로주고받습니다.

PS
내 질문에 대한 답변이 Date에 불과합니다.
boolean 매개 변수가 있고 누군가 실수로 true 대신 tru을 전달한다고 가정합니다.이 상황도 처리 할 수 ​​있어야합니다. 이 값을 구문 분석 할 수 있기 때문에 사전에

감사합니다 :)

+0

사용자 정의 유효성 검사를 구현해야하는 것처럼 보입니다. –

+0

@MarcoAcierno 어떻게하면됩니까? 링크를 제공 할 수 있습니까? 감사합니다 :) –

답변

3

봄, 500 상태 코드로 실패합니다. 요청 처리의

단계는 : @Validated는 사용되는 경우

  1. 요청
  2. 검증 값을 종점
  3. 해석 요청 PARAMS/바디 값을 식별하고, 검출 된 오브젝트에 바인딩받을
  4. 적절한 매개 변수를 사용하여 메소드 호출 입력

경우에 따라 흐름은 구문 분석 (3) 단계에서 실패합니다.

대부분 BindException이 표시됩니다. 컨트롤러에 대한 예외 처리기를 제공하여 이러한 경우를 처리 할 수 ​​있습니다. (Date들과 특히 hussle)이 예상대로 작동하지 않는 구문 분석 할 때

@ControllerAdvice 
public class ControllerExceptionHandler { 
    @ExceptionHandler(BindException.class) 
    @ResponseStatus(HttpStatus.BAD_REQUEST) 
    @ResponseBody 
    public YourErrorObject handleBindException(BindException e) { 
     // the details which field binding went wrong are in the 
     // exception object. 
     return yourCustomErrorData; 
    } 
} 

그렇지 않으면, 당신은 사용자 정의 매퍼/시리얼을 추가 할 수 있습니다.

대부분의 경우 Jackson은 값을 serialize/deserialize해야하기 때문에 Jackson을 구성해야합니다.

+0

이 한 해보자, 감사합니다 :) –

관련 문제