반응형
keywords: java, spring, rest controller, rest api, jquery ajax
오류
jQuery ajax로 REST API를 호출하여 정상적으로 저장 다 되고 HTTP 200을 리턴했는데 화면단에서 오류가 났다.
$.ajax({
type: 'post'
// ... 어쩌고저쩌고
}).done(function(){
console.log('success');
}).fail(function(jqXhr){
console.error(jqXhr);
});
컨트롤러에서는 이렇다.
@PostMapping("/set-password")
public ResponseEntity<Void> setPassword(@RequestBody Map<String, String> payload) throws Exception {
// 어쩌고 저쩌고
return ResponseEntity.ok().build();
}
아무래도 response 내용이 없어서 jQuery가 못 받는 것 같다. 근데 ResponseEntity<Void>
인데 어쩌라는 걸까?
해결
이래저래 검색을 하다 보니 204 No Content
라는 상태가 있다. 아래 글을 읽어 보자.
HTTP 204 No Content 성공 상태 응답 코드는 요청이 성공했으나 클라이언트가 현재 페이지에서 벗어나지 않아도 된다는 것을 나타냅니다. 기본값에서 204 응답은 캐시에 저장할 수 있습니다. 캐시에서 가져온 응답인 경우 ETag 헤더를 포함합니다.
흔히 204를 반환하는 경우는 PUT 요청에 대한 응답으로, 사용자에게 보여지는 페이지를 바꾸지 않고 리소스를 업데이트할 때 쓰입니다. 리소스를 생성한 경우엔 201 Created를 대신 반환합니다. 새롭게 업데이트한 페이지를 보여줘야 할 경우 200을 사용해야 합니다.
@PostMapping("/set-password")
public ResponseEntity<Void> setPassword(@RequestBody Map<String, String> payload) throws Exception {
// 어쩌고 저쩌고
return ResponseEntity.noContent().build();
}
HTTP 상태도 모르는 웹개발자...부끄럽다.
참고 자료
204 No Content - MDN https://developer.mozilla.org/ko/docs/Web/HTTP/Status/204
반응형
'프로그래밍 > Java' 카테고리의 다른 글
JSTL: 서버단 코딩 없이 네이버 블로그 RSS로 포스트 목록 가져오기 (1) | 2020.07.17 |
---|---|
JSP 에러 - TLD 또는 태그 파일 내의 attribute 지시어에 의하면 ~ 어떤 표현식도 받아들이지 않습니다. (0) | 2020.07.17 |
JSP contentType charset=UTF-8 전역 설정 방법 (JSP 한글 깨짐 혹은 물음표 ??? 오류) (0) | 2020.07.05 |
쿠키에 저장한 한글이 깨질 때 (0) | 2020.07.02 |
맥/MacOS - CannotGetJdbcConnectionException 로케일을 인식할 수 없습니다 (0) | 2020.07.01 |