홈>
내가 제공하는 컨트롤러가 있다고 가정합니다.가져 오기
Bean을 요청하고 반환하여 JSON으로 직렬화되며 예외 처리기를 제공합니다.IllegalArgumentException.
그것은 서비스에서 제기 될 수 있습니다 :
@RequestMapping(value= "/meta/{itemId}", method= RequestMethod.GET, produces= MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public MetaInformation getMetaInformation(@PathVariable int itemId) {
return myService.getMetaInformation(itemId);
}
@ExceptionHandler(IllegalArgumentException.class)
@ResponseStatus(value= HttpStatus.BAD_REQUEST)
@ResponseBody
public String handleIllegalArgumentException(IllegalArgumentException ex) {
return ExceptionUtils.getStackTrace(ex);
}
메시지 변환기는 다음과 같습니다.
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> <bean class="org.springframework.http.converter.StringHttpMessageConverter" /> </mvc:message-converters></mvc:annotation-driven>
이제 브라우저에서 주어진 URL을 요청하면 올바른 JSON 답장이 표시됩니다. 그러나 예외가 제기되면, 분리 된 예외는 JSON으로 변환되지만, 나는 그것을 처리하는 것을 좋아할 것입니다.stringhttpmessageConverter.
(결과텍스트 /일반
MIME 유형). 어떻게 갔을까요?
사진을 더 완전하게 만들려면 (복잡한), 다음과 같은 핸들러가 있다고 가정 해보십시오.
@RequestMapping(value= "/version", method= RequestMethod.GET)
@ResponseBody
public String getApplicationVersion() {
return "1.0.12";
}
이 핸들러는 반환 문자열을 둘 다로 직렬화 할 수 있습니다.mappingjackson2httpmessageConverter.
과stringhttpmessageConverter.
통과에 따라 다름수락 유형
고객이 반환 유형과 값은 다음과 같아야합니다.
+----+---------------------+-----------------------+------------------+-------------------------------------+ | NN | URL | Accept-type | Content-type | Message converter | | | | request header | response header | | +----+---------------------+-----------------------+------------------+-------------------------------------+ | 1. | /version | text/html; */* | text/plain | StringHttpMessageConverter | | 2. | /version | application/json; */* | application/json | MappingJackson2HttpMessageConverter | | 3. | /meta/1 | text/html; */* | application/json | MappingJackson2HttpMessageConverter | | 4. | /meta/1 | application/json; */* | application/json | MappingJackson2HttpMessageConverter | | 5. | /meta/0 (exception) | text/html; */* | text/plain | StringHttpMessageConverter | | 6. | /meta/0 (exception) | application/json; */* | text/plain | StringHttpMessageConverter | +----+---------------------+-----------------------+------------------+-------------------------------------+
관련 문제 : github.com/spring-projects/spring-framework/issues/20865.
Lucas Cimon2021-04-30 12:29:37관련 자료
- c# - NET 5 예외 발생 콘텐츠 스트림 오류
- javascript - 현재 클릭 한 버튼과 일치하도록 안의 콘텐츠를 변경하려면 어떻게해야합니까?
- powerquery - 기준에 따라 다른 열에서 선택하도록 열의 내용을 변경하고 열에서 선택할 때 해당 열을 비워 두는 방법
- javascript - 모든 드롭 다운 메뉴의 텍스트 콘텐츠는 개별적으로 업데이트하는 대신 동시에 변경됩니다
- ios - 우선 순위를 통해 고유 콘텐츠 크기를 변경하는 방법
- php - 속성을 변경하지 않고 단축 코드 내부의 콘텐츠를 변경하는 방법은 무엇입니까?
- dplyr - 아르 자형 - 기능이있는 열 내용을 새 내용으로 변경
- python - 파일 내용 읽기가 잘못된 경우 사용할 예외
- javascript - HTML5 맞춤 데이터 속성에서 div 콘텐츠 변경
- macos - Safari에서 콘텐츠 보안 정책을 변경하거나 비활성화 하시겠습니까?
- Python에서 함수를 적용한 후 목록 내용을 변경하는 방법
- python - Entry에서와 마찬가지로 canvascreate_text의 내용을 클릭하여 변경할 수 있습니까?
- python - discordpy에서 예외 (유형 오류)를 발생시키는 오류 처리기
- reactjs - 값이 변경되지 않는 핸들러가 작동하지 않는 이유는 무엇입니까?
- javascript - magnific popup - 프로그래밍 방식으로 콘텐츠를 팝업 양식에서 모달 스피너로 변경 한 다음 다시 양식으로 변경
- node.js - NodeJS를 사용하여 JSON 내용 변경
- c# - aspnet core razor - 전역 예외 처리기
- Powershell/XAML의 XML 파일에서 버튼의 내용을 변경하는 방법은 무엇입니까?
- javascript - fullcalendar v5에서 빈 이벤트 선택 내용을 변경하는 방법은 무엇입니까?
- c# - 다른 메서드 내에서 textBlock의 내용을 동적으로 변경하는 방법은 무엇입니까?
관련 질문
- webutils.extractFullFilenameFromUrlPath가 있는 Spring 5
- java : Spring MVC에서 API를 설계하는 방법은 무엇입니까?
- java : 스프링 부트 활성화 글로벌 CORS 지원 문제: GET만 작동하고 POST, PUT 및 삭제는 작동하지 않습니다.
- java : Spring aop 구성이 Eclipse에서 제대로 작동하지 않습니다.
- java : Webjars-locator가 XML 기반 Spring MVC 4.2.x 구성에서 작동하지 않습니까?
- java : Spring -POJO에 서비스 자동 연결
- spring : @Transactional 주석 서비스에서 롤백이 작동하지 않습니다. 봄 + 최대 절전 모드
- java : Spring Boot 인터페이스를 컨트롤러 매개변수로 사용하고 스프링이 인스턴스화하는 구현을 사용하도록 할 수 있습니까?
- java : Spring 컨트롤러에서 요청 매개변수를 분할할 수 있습니까?
- java : tomcat, servlet 및 spring을 사용하여 내 웹페이지를 로드할 수 없습니다.
기존 메시지 변환기를 추가하거나 재정의 할 수 있습니다. 기본값을 완전히 바꾸려면 "register-defaults= false"속성을 사용하십시오.
Simon Logic2021-04-30 05:03:13