인프런 커뮤니티 질문&답변

성동원님의 프로필 이미지

작성한 질문수

스프링 프레임워크는 내 손에 [스프1탄]

35.REST 전송 방식의 이해(@RestController)

restapi 관련 문의

작성

·

308

0

@RestController에서 서버는 데이터를 주고 받을 때 데이터타입이 json이어야한다고 하셨습니다.

그래서 클라이언트에서 ajax통신으로 서버에 요청을 보낼때, json.stringify을 통해서 Json타입으로 변환 후 전달하셨습니다. 그렇게 하지 않으면 서버에서 제대로 값을 전달 받지 못하는 것도 확인했습니다.

그런데 궁금한게 있습니다. json이란게 아래와 같이 객체를 문자열로 표기한 거잖아요. 

"{"key":value."key2":value2}" 

 

그럼 애초에 client(jsp) 에서 ajax 통신시

"{"key":value."key2":value2}"  이런식으로 data를 보내면 되야하는 거 아닌가요?

json이란 게 약속된 규칙을 통해 객체를 문자열로 표기한 건데 굳이 Json.stringfy를 통해 문자열을 한번더 가공해야지 통신된다는게 이해가 잘 안됩니다.

 

그렇다면 "{"key":value."key2":value2}" 이건 json타입이 아니라

stringfy()로 감싸야지 json타입이 된다는 말 인것 같거든요.

아니면 @RestController 어노테이션이 붙은 상태에서 서버로 데이터를 보낼때는 Json.stringfy를 꼭 붙여야한다는 규칙이 있다 라고 생각하면 되는건가요?

 

답변 부탁드립니다.

 

답변 2

0

""(큰따옴표)로 넘어가는 데이터가 있기도 하고, 날짜의 경우에는 새로 new 로 생성하게 되면 '" (날짜) "'이렇게 이중으로 감싸는 경우도 있습니다.

다양한 경우가 있으니, 알아서 JSON데이터로 변환해주는 stringify()를 쓰는 게 맞지 않나 생각합니다.

내부 구조는 공식문서를 보는 게 좋겠네요.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

0

박매일님의 프로필 이미지
박매일
지식공유자

ajax에서 data :  {key:value,key:value}로 서버로보낼때는 key는 파라메터이름, value는 값이렇게 서버로 전달됩니다.

하지만 json포멧으로 서버에 전달할려면 문자열을 stringfy함수에 넣어서 json포멧으로 만들어서 전달해야 서버에서 json포멧으로 인식을 하게 되어있다고 아시면 될듯합니다.^^