springboot에서rest 인터페이스 404500 json 형식으로 되돌아오기
2704 단어 restspringboot
{ "status": true, "code": 200, "message": null, "data": [
{ "id": "101", "name": "jack"
},
{ "id": "102", "name": "jason"
}
]
}
그러나 호출자가 우리api를 요청할 때 인터페이스 주소를 잘못 쓰면 404 오류가 발생합니다. 전통적인 웹 시스템에서 우리는 404 오류 페이지를 사용자 정의하여 더욱 우호적인 모습을 보일 수 있습니다.
spring boot에서도 다음과 같은 json 형식의 데이터가 반환됩니다.
{ "timestamp": 1492063521109, "status": 404, "error": "Not Found", "message": "No message available", "path": "/rest11/auth"}
어느 주소를 찾지 못했는지 알려주는 것도 우호적이지만 위에서 정의한 데이터 형식이 아래와 일치하지 않기 때문에 사용자가 이 반환을 받을 때 식별할 수 없습니다. 그 중에서 가장 뚜렷한 것은status 필드입니다.
우리가 정의한 것은boolean 형식으로 성공 여부를 표시합니다
여기 되돌아오는 게 http 상태 코드예요.
그래서 우리는 이런 시스템 오류가 발생할 때도 우리가 정의한 그 형식을 되돌려줄 수 있어야 한다
비정상 처리 클래스 정의
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;
:www.1b23.com
@ControllerAdvicepublic class GlobalExceptionHandler { private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
/**
* , :404,500
* @param req
* @param resp
* @param e
* @return
* @throws Exception
*/
@ExceptionHandler(value = Exception.class) @ResponseBody
public ResponseData defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
logger.error("", e);
ResponseData r = new ResponseData();
r.setMessage(e.getMessage()); if (e instanceof org.springframework.web.servlet.NoHandlerFoundException) {
r.setCode(404);
} else {
r.setCode(500);
}
r.setData(null);
r.setStatus(false); return r;
}
}
ResponseData는 포맷을 반환하는 엔티티 클래스입니다.
이런 것은 오류가 발생했을 때 이쪽에서 포착된 다음에 되돌아오는 형식을 봉하여 호출자에게 되돌려준다
마지막 단계는 스프링 부트의 구성 파일에 다음 구성을 추가하는 것입니다.
# , spring.mvc.throw-exception-if-no-handler-found=true# spring.resources.add-mappings=false
그리고 우리가 존재하지 않는 인터페이스를 호출할 때, 되돌아오는 오류 정보는 바로 우리가 정의한 형식이다
{ "status": false, "code": 404, "message": "No handler found for GET /rest11/auth", "data": null}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[OutSystems] Expose REST API의 OnResponse 사용OutSystems에서 REST API를 만들어 공개하는 Expose REST API의 기능에는 전처리를 할 수 있는 OnRequest, 후처리를 할 수 있는 OnResponse라는 속성이 있습니다. Expose한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.