작성자 프로필
라면과구공탄
자바스크립트 풀스택 개발자
2024.06.06

Converting circular structure to JSON

객체 내에 순환참조가 있을 때 발생한다. 순환참조는 객체가 자기 자신을 참조하는 구조를 의미한다. 예를 들어, 객체 A가 객체 B를 참조하고, 객체 B가 다시 객체 A를 참조하는 경우이다. 이러한 구조를 JSON으로 변환하려고 하면 이 오류가 발생한다. 본인은 어디에서 순환참조가 발생하는지 몰라서 다음과 같이 해결하였다.

return res.json({ accesstoken }) => 오류 return res.send({ accesstoken }) => 오류 res.json({ accesstoken }) => 정상 res.send({ accesstoken }) => 정상 return { accesstoken } => 정상

두 번째 코드에서 오류가 나서 다섯 번째 코드로 수정하였다.

return res.json({ accesstoken })

        
        
      

return res.send({ accesstoken })

        
        
      

res.json({ accesstoken })

        
        
      

res.send({ accesstoken })

        
        
      

return { accesstoken }

        
        
      

Res.json / Res.send / Res.end

일반적으로 res.json(), res.send(), res.end()가 호출되면 응답이 완료된 것으로 간주된다.

일반적으로 res.json, res.send, res.end 중 하나 이후에는 다른 응답 메서드를 호출하지 않는다.

즉, 한 번 쓰면 그걸로 응답은 끝이라는 말이다.

res.json()

json형식 데이터를 클라이언트에 전송

• JavaScript 개체 또는 배열을 JSON 문자열로 자동 변환함.

Content-Type 헤더application/json으로 설정해야함.

• 함수 호출 순서 : res.json(object) → res.json(object) → res.send(string)


res.send()

다양한 유형(문자열, 버퍼, 객체, 배열)의 데이터를 전송

• 문자열, 버퍼, JSON 개체 또는 배열을 보낼 수 있음. (json은 어차피 res.json을 씀)

• 전송된 데이터 유형에 따라 'Content-Type' 헤더를 설정함.

(예: 문자열의 경우 text/plain, 객체/배열의 경우 application/json).

• res.json()보다 더 다양하지만 객체나 배열이 제공되면 res.json()과 유사하게 동작함.

• 함수 호출 순서 : res.json(object) → res.send(string)

res.end()

• 본문 데이터를 보내지 않고 response를 끝내고 싶은 경우

• 안 써도 됨.

참고 링크 https://haeguri.github.io/2018/12/30/compare-response-json-send-func/ 시간이 없어서 res.json과 res.send를 직접 출력해보지는 않았고, 이 블로그를 참고해서 씀.

스터디 프로필
자바스크립트 풀스택 개발자
의 다른 카테고리
0
👍0
👏0
🤔
댓글 작성