2016-08-23 5 views
-1

**** **** 피드백시만들기 봄 부팅 수익 406 대신 415

, 나는 다음과 같은 면책 조항을 부착하고 편집 :

나는 것을 415 알고 일반 코드와 내가 는 API 내가 어떤 이유로 지정이 재정의를 구현하고 ... 그것의 원인이 정상적인 상태를 알고 내가 그것을

,369을 제어하지 않기 때문에 나는 그것을 변경하지 못할

**** 최종 편집 ****

그래서 나는 다음이 : 나는 Content-Type 헤더 설정없이 메시지를 게시 할 때

@RequestMapping(method = POST, path = "/foo", 
       consumes = "application/json", produces = "application/json") 
public ResponseEntity<Something> postFoo() { 
    return null; 
} 

, 내가 예상 (415)를 얻을 수 있지만, 내가 원하는 보일러 판 코드없이 406을 반환하도록 변경하십시오. 그게 가능하니? 나는 수색을하고 수색했으나, 어떻게 할 수 있는지를 알려주는 문서를 찾지 못하는 것 같습니다.

+0

왜 당신은 (@ marthursson의 설명을 고려하여) 그렇게하고 싶습니까? –

+0

@nterry - 혹시 내 솔루션을 사용해 보았는데 작동하지 않았습니까? – Deroude

+0

@Deroude 아픈 내일 시도하지만, 그것을보고; 그것은 내가 원하는 것 같다. 나는 그것이 ControllerAdvice가 될 것으로 의심하지만, 어떤 행동을 변경하려면 무엇을 재정의 찾을 수 없습니다. – nterry

답변

-2

415는 지정된 "Content-Type"헤더가 대상 서비스에서 지원되지 않는 경우의 적절한 응답 상태입니다. 406은 "허용되지 않음"을 의미하며 유효하지 않은 (또는 누락 된) "수락"헤더가 제공 될 때만 반환되어야합니다.

표시되는 동작이 정확하며 아무 것도 변경하지 마십시오.

+1

질문에 대답하지 않습니다. – Deroude

+0

질문은 아마도 오해를 기반으로합니다. 내 대답은 오류 코드의 의미를 분명히합니다. 표준 코드와 달리 자신이해야 할 것에 대한 개인적인 견해에 따라 상태 코드를 변경하는 것은 끔찍한 생각입니다. – marthursson

+0

@Deroude marthursson이 말했듯이, 질문은 HTTP 상태 코드의 의미에 대한 오해에 근거합니다. 그리고 이것이 정답입니다! –

-3

return new ResponseEntity(HttpStatus.NOT_ACCEPTABLE) 상용구로 생각하십니까?

편집 정화에 대한

감사 : 요청을 처리 할 때 예외 핸들러의 방법에 들어가기 전에, 스프링에 의해 발생합니다. 그래서, 당신이 할 수있는 것은 특정 예외에 대한 기본 동작을 변경하는 것입니다. 이를 위해 다음과 같이 특정 메서드를 재정의, ResponseEntityExceptionHandler 직접 만들 :

@ControllerAdvice 
public class GlobalWebExceptionHandler extends ResponseEntityExceptionHandler { 
    @Override 
    protected ResponseEntity handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException ex, HttpHeaders headers, HttpStatus status, WebRequest request){ 
     /* other processing */ 
     return new ResponseEntity(HttpStatus.NOT_ACCEPTABLE); 
    } 
} 

Here이를 다루는 훌륭한 기사입니다.

+1

누락 된 Accept/Content-Type을 기반으로 반환되는 기본 오류 헤더가 메소드가 호출되기 전에 프레임 워크에 의해 자동으로 처리되므로 메소드 본체에서 이것을 처리하는 편리한 방법이 없습니다 (실제로는 사용하지 말아야하는 주석에서 'consumes'및 'produce'를 지정하지 않는 한)). – marthursson