개발자
react natvie로 dart api를 활용한 미니프로젝트를 진행하려고 합니다. 그런데 api 사용을 위해서 각 기업의 고유번호를 받아오는 과정에서 api를 호출하면 zip파일을 받게됩니다. 여기서 문제입니다. 그동안 json으로만 받아봐서 zip파일은 경험이 없습니다. react native에서 api호출시 zip파일로 받아서 저장하는 방법이 있을까요? 서버없이 구현하고 싶습니다. 제가 해보니 axios.get으로 받을경우 CORS오류가 발생됬습니다.. react 혹은 react native로 api 호출시 zip파일을 받아서 저장하는 방법을 알고계신다면 알려주시길 부탁드리겠습니다.
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 05월 06일
React Native에서 zip 파일을 받아서 저장하기 위해선 몇 가지 단계를 거쳐야 합니다. 1. 우선, fetch 또는 axios와 같은 라이브러리를 사용하여 API 호출을 합니다. 2. 그런 다음, 응답을 arraybuffer 형태로 받습니다. 이 때, CORS 문제가 발생한다면 서버 측에서 해당 도메인을 화이트리스트에 추가해 줘야 합니다. fetch의 경우: ```javascript fetch(url) .then(response => response.arrayBuffer()) .then(arrayBuffer => { // 압축 해제 및 사용 }); ``` axios의 경우: ```javascript axios.get(url, {responseType: 'arraybuffer'}) .then(response => { // arrayBuffer를 blob으로 저장 후 압축 해제/사용 const blob = new Blob([response.data], {type: 'application/zip'}); }) ``` 3. 다음으로 필요한 것은 RNFetchBlob 라이브러리입니다. 이 라이브러리는 플랫폼 간 파일 접근 및 데이터 반환에 유용합니다. 4. 본래 React Native 자체적으로 Binary data를 handle할 수 없지만 RNFetchBlob를 통해서 FileSystem에 직접적으로 접근할 수 있게 됩니다. 5. 따라서 응답받은 zip 파일은 이 라이브러리를 통해 장치에 저장될 수 있습니다. 6. 저장된 zip 파일의 압축을 해제하기 위해선 react-native-zip-archive 라이브러리를 사용할 수 있습니다. 위의 과정들을 거치면 React Native에서도 zip 파일을 받아와 저장하고, 압축을 해제하는 것이 가능합니다. 그러나 이 모든 과정이 클라이언트 측에서 이루어지기 때문에 성능 저하 등의 문제가 있을 수 있습니다. 따라서 필요에 따라 API 서버에서 직접 압축을 풀고 필요한 데이터만 클라이언트에게 전달하는 방식도 고려해 볼 만 합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!