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

etax님의 프로필 이미지
etax

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

dio + retrofit 으로 restapi와 통신중 파라미터 타입 이슈

작성

·

160

0

안녕하세요 코팩님.

 

파라미터 전달 과정에 생긴 이슈가 있어 문의드립니다.

 

현제 client에서 post로 데이터를 전송하고 body에는 itemPrice라는 키로 double형 데이터를 보내고 있습니다.

로그를 찍어보면 22000.0 으로 찍히고 api서버에 제대로 넘어가서, api서버는 맵으로 받게 되어있어서 형변환해서 사용하고 있습니다.

 

이번에 테스트겸 web으로 빌드를 하여 배포를 하고 테스트를 진행을 하고 있는데요,

동일한 페이지에서 동일한 액션을 했을때

값이 double형이 아닌 22000으로 전달이 되는것이 확인되었습니다....

서버에서는 int로 왔기 때문에 형변환 오류가 발생했구요.

값을 보내기전과 dio onRequest에서도 값을 찍어봐도 dobule형이 아닌 Integer 형인 2200으로 되서 보내지더라구요.

 

애초에 itemPrice로 넣는 값은 double 형 변수에 담아 값을 관리합니다.

 

dynamic 타입읩 맵에 dobule형 변수 값을 넣어도, 값이 integer 형태면 dobule로 안들어 가는 것 같습니다(웹으로 빌드시에)

이런경우 조금 난감한데요 , 어떤식으로 풀어야할지 조언 부탁드립니다.

 

감사합니다.

 

 

 

 

 

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

일단 첫번째로는 서버에서 너무 당연히도 형변환 로직이 존재해야합니다.

서버의 최전방 레이어는 클라이언트에서 항상 올바른 타입/형태를 보내지 않을 가능성을 두고 검증 레이어를 작성해야합니다.

웹에서는 (JS에서) int, double의 구분이 없습니다. 그냥 숫자타입 하나밖에 없어서 그런게 아닐까 생각됩니다.

감사합니다!

etax님의 프로필 이미지
etax
질문자

답변 감사합니다~!

api서버가 저희가 아니라서 ㅠㅠ

클라이언트에서 보내기전에 데이터 타입을 좀 변경해야 겠네요 ㅠㅠ

 

도움주셔서 감사합니다~!

etax님의 프로필 이미지
etax

작성한 질문수

질문하기