API

게시판 boardId, postId 64비트 부동 소수점 형식으로 인한 문제

김링크

2024.07.15읽음 327

게시판 API 가 필요한 상황인데

64비트 부동 소수점 형식으로 인식해
응답 받을때 boardId, postId 둘다 ID뒤에 숫자가 000 으로 바뀌어서 나오네요.
이거 해결하신분 있으신가요~?

{
"boardId": 5000000001203670000,
"postId": 5070000000142597000,
"title": "테스트 게시판",
"readCount": 39,
"commentCount": 1,
"fileCount": 0,
"createdTime": "2024-06-26T16:33:52+09:00",
"modifiedTime": "2024-06-26T16:33:52+09:00",
"userId": "ba0fa8d4-4ab9-325c-1dd0-1344a9edbn15",
"userName": "테스터",
"mustReadPeriod": {
"startDate": null,
"endDate": null
},
"isMustRead": false,
"resourceLocation": null,
"isUnread": true
},

이렇게 응답 받고 해당 
postId로 API 날리면 에러 날라옵니다...

댓글1

  • 업데이트 된 답글입니다.

    김링크 작성자

    문제 해결해서 답변 남깁니다.

    해당 문제는 json parse 하는 과정에서 생기는 문제였습니다.

    1. axios에서 옵션 추가
    axios에서부터 응답을 받을때 json parse가 발생하는것 같습니다.
    이걸 해결하기 위해 axios에 옵션을 추가 했습니다.

    `const response = await axios.get(url, { headers, responseType: 'text' });`

    이렇게 하게 되면 응답 받을때 full-text로 받아서 데이터의 손실 없이 받을수 있었습니다.

    2. json-bigint 라이브러리 사용
    데이터를 받고 나서도 어쨋든 해당 데이터를 parsing해주는 과정은 필요합니다.
    이때도 데이터 손실이 발생할수 있습니다.
    제 문제는 너무 큰 숫자에서 발생하는 문제 이므로 json-bigint 라이브러리를 사용했습니다.

    해당 라이브러리 설치후

    function parseJSONPreservingBigIntAsString(jsonString) {
       return JSONbig({ storeAsString: true }).parse(jsonString);
    }

    이 함수를 만들어서 Int 가 String 형태로 들어가도록 하였습니다.



    유사한 에러에 도움되시길 바랍니다.

    2024.07.16

    0
이전 글서비스 계정의 프로필을 수정하고싶습니다.
다음 글모바일에서 링크 서비스를 통해서 다른 애플리케이션 접근 시 애플리케이션 상에서 이미지 다운로드 실패
목록

궁금한 점을 해결하지 못하셨나요?
지금 바로 NAVER WORKS 사용자들에게 물어보세요!