새소식

반응형
JavaScript/JQuery

Jquery Ajax 415 에러(occure Ajax request Error. status code:415, request uri), 400

  • -
반응형

환경구성 : Spring Boot + Jquery + Thymeleaf
 
Jquery ajax를 통해 Spring Boot Controller로 데이터를 보낼때 415 에러, 400 에러가 났다.
 
- 결론
1. Controller 로 ajax를 통해 Json 데이터를 보낼땐 String 형태로 보내기
2. contentType 설정을 application/json으로 설정하기
3. Controller에서 받는 형태에 따라 다르다

@RequestBody 어노테이션을 사용하여 Model 형태의 객체로 받을경우 Content-Type 을 “application/json” 로 설정 해줘야한다. 또한 json 데이터는 JSON.stringify(json) 을
사용하여 Json String 형태로 변환하여 보낸다.

@RequestParam 어노테이션을 사용하여 데이터를
받을 경우 Content-Type을
"application/x-www-form-urlencoded" 로 설정한다.
기본 Content-Type 이기 때문에 Content-Type을
생략해도 된다.
위 Content-Type은 데이터가 Json 형태가
아닌 Query String 형태로 날라간다.
예시) name=obo&number=123&address=seoul
 

1. List Model 형식으로 데이터를 보냈으며 에러는 보낼때 Content-Type 설정을 안했다. (415 Error)

 
- 보낼 데이터 형식

위 List 형 Json 데이터를 Controller로 보냈다. 하지만 415 Error 와 함께 보내지지 않았다.
data 는 제대로 json 형태의 String 문자열로 보냈다.
이유는 보내는 데이터의 Content-Type의 미설정으로 인해 서버가 어떠한 데이터인지 이해하지 못해 발생하는 에러다.

아래의 이미지는 ajax를 통해 데이터를 보낼때의 헤더이다.
Content-Type 이 json 형태가 아니라서 서버가 이해하지 못했다.

 
아래와 같이 content-Type 을 설정해줘야 한다.
* contentType: "application/json; charset=utf-8"

 

2. 또한 data 형식을 json 형태의 String 문자열로 보내지 않으면 400에러가 난다. (400 Error)

- 보낼 데이터 형식

위 List 형 Json 데이터를 Controller로 보냈다. 하지만 400 Error 와 함께 보내지지 않았다.
데이터 자체를 전송할 때 Json 형태의 String 문자열로 보내야 서버가 제대로 받을 수 있었다.
 

 
아래와 같이 data를 보낼때 Json 데이터를 String 문자열로 변환하여 보내야한다.
* JSON.stringify(보낼 Json 형태의 data)

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.