Restlet 프레임 워크를 사용하여 프로젝트 API를 관리합니다. 기본적으로 오류 응답은 HTML 형식으로 표시됩니다. 기본적으로 모든 오류 응답이 JSON 형식이되도록 어떻게 변경할 수 있습니까?
엔티티 응답에는 잘 작동하지만 오류 응답에는 작동하지 않는 사용자 지정 변환기를 추가해 보았습니다.
110 개 이상의 엔드 포인트가 지원 application/json
되므로 이상적으로는 항상 JSON으로 반환하도록 기본 오류를 설정하고 싶습니다. 기본 변환기는 실제 엔터티를 반환하는 모든 메서드에서 작동합니다.
@Get("json")
@Produces("application/json")
public User represent() {
...
return result;
}
그러나이 ResourceException
메서드에 의해 던져진 것은 HTML을 반환합니다.
서비스가 생성 할 형식에 대해 확신하는 경우 클래스 수준에서 @Produces 주석을 사용하여 서비스 클래스에 주석을 달 수 있습니다. 그러면 모든 방법에 대해 동일하게 정의 할 필요가 없습니다.
또한 @Produces 가 클래스 수준에서 정의되고 특정 메서드에 대한 응답 형식을 변경하려는 경우 해당 특정 메서드에 다른 형식에 대한 주석을 달 수 있습니다.
아래 코드를 시도하십시오 ..
public Response represent(){
try{
}catch(Exception ex){
return Response.status(500)
.entity(new ExceptionMessage("500", ex.getMessage()))
.type(MediaType.APPLICATION_JSON).
build();
}
return Response.status(Response.Status.OK).entity(result).build();
}
그리고 예외 메시지에 대한 Model 클래스 아래에 있습니다.
@XmlRootElement
class ExceptionMessage{
private String statusCode;
private String errorMessage;
public ExceptionMessage() {
}
public ExceptionMessage(String statusCode, String errorMessage) {
this.statusCode = statusCode;
this.errorMessage = errorMessage;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public String getStatusCode() {
return statusCode;
}
public void setStatusCode(String statusCode) {
this.statusCode = statusCode;
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다