AbstractHttpMessageConverter writeInternal() 메서드에서 응답 상태 코드를 변경할 수 있습니까?AbstractHttpMessageConverter에서 응답 코드 변경
내 AbstractHttpMessageConverter (MappingJackson2HttpMessageConverter 확장)에서 오류 응답을 200으로 변경하고 실제 상태 코드 (예 : 400)를 json의 상태 필드에 추가하고 싶습니다.
EDIT1
내가 돌아 해요 코드와 같은 : :
JSONObject json= new JSONObject();
json.put("error", "My Error");
return new ResponseEntity<JSONObject>(json, HttpStatus.BAD_REQUEST);
어딘가에 내가 응답 몸을 차단하려는 :
JSONObject json= new JSONObject();
json.put("name", "My Name");
return new ResponseEntity<JSONObject>(json, HttpStatus.OK);
또는 오류의 경우
a) 원래 응답 본체 (enity)를 상태 코드 으로 감싸십시오 b) 응답 상태 코드를 20으로 변경하십시오0 그래서 두 변종이 의미 :
{ "status": 200, "response": { "name": "My Name" } }
{ "status": 400, "response": { "error": "My Error" } }
과 HTTP 상태 200이 반환됩니다 두 경우이다.
MappingJackson2HttpMessageConverter를 확장하고 writeInternal 메서드를 오버라이드하여이 작업을 수행하려고 생각했지만 불행히도 상태 코드를 변경할 수 없습니다.
참고 컨트롤러 클래스에서는이 기능을 사용하고 싶지 않습니다. 그들은 단지 기본 json 구조를 반환해야합니다.
일반적으로 응답 본문에 http 코드를 두는 것이 좋지 않은 것으로 간주됩니다. 중복성을 도입하기 때문입니다. 특별한 상황에서는 괜찮을 수도 있습니다. – Qw3ry