파파비의 블로그

플러터, flutter) 데이터를 저장하는 방법 - 웹서버를 중심으로 본문

개발/flutter

플러터, flutter) 데이터를 저장하는 방법 - 웹서버를 중심으로

N. Dave 2020. 6. 10. 15:33
반응형

앱에서 데이터를 저장하는 방법.

 

1) 변수를 통한 Memory 에 저장하기 > 끄면 바로 날라가 버림 

2) 기기 자체에 저장하는 방법 

3) 웹서버에 데이터를 저장하는 방법

그 중에서 3번째를 특히 자세히 보고자 한다.

온라인상으로 data를 저장하는 방식이고, 온라인 상의 database에 저장을 해야 한다.

그러나 database를 다루는 것은 웹서버이므로, 우리는 웹서버와 통신을 통해 

database내부의 data들을 CRUD할 수 있다.

 

그중에서 가장 자주 쓰이는 방식은 HTTP방식을 활용한 REST 방식이다.

 

firebase의 경우에는 웹서버+Database를 엮은 backend서비스인데,

실제로 다른 백엔드를 쓰거나 백엔드를 구축하려면,

database를 구축하고, 그 database를 다루는 웹서버 또한 구축해야한다.

 

따라서 웹 지식이 필요하다.

 

웹서버와 통신을 하기 위해서는 그 웹서버가 사용하는 언어 및 방식을 잘 알아야하기 때문에

그 서버의 doc을 잘 읽어보는 것이 매우 중요하다.

 

보통 http요청은 (endpoint)+http verb로 구성되어 있는데

endpoint는 위치를 생각하면 좋고, verb는 CRUD를 생각하면 된다.

근데 역시 CRUD가 다 되는 것은 아니고, 웹서버가 제공하는 기능에 따라 어떻게 될지는 모른다.

 

참고 영상

https://www.udemy.com/course/learn-flutter-dart-to-build-ios-android-apps/learn/lecture/15103240#questions

 

 

 

 

자 이제 본격적으로 Firebase에 data를 저장시켜보자

이게 파이어베이스 database칸이다.

저기 가운데 https가 보일텐데 그게 기본 url이다.

파이어베이스 서버는 특이한점이 2가지가 있는데,

 

1) 요청할 때 바로 folder를 만들 수 있다는 점과

2) 요청 뒤에는 .json 을 붙여야 한다는 것이다.

 

모든 api들이 그런 것은 아니니 항상 doc을 잘 읽어보아야 한다.

 

그리고 나서 Product를 저장했을 때 그 data 값을 파이어베이스 database로 보내도록 해두었다.

 

point 1) url은 위에 database의 코드 + product로 해서 파이어베이스 규칙을 사용했고, product는 ㅅ ㅐ로운 폴더가 될 것이다.

 

point 2) http패키지를 import했고 as http로 해서 bundle화 시켜버렸음. 그래서 그 패키지를 소환할 때는 "http"로 접근해야 한다.

 

point 3) http.post 명령어를 통해 data를 저장하도록 함수를 활용했고, 그 안에 첫째 인수로는 "어디에~"를 의미하는 endpoint(URL)를 넣었고, 그 다음에는 body부분, data부분을 넣었다.

 

point 4) 파이어베이스는 json으로 data를 주고 받는데, 그래서 json화해야했다. 

 - json화를 위해 dart:convert 패키지를 import해야 한다

 - 그리고 json.encode를 통해 map객체를 json화 한 모습이다. (다른 object들도 가능한데 정확힌 모름)

 

point 5) http.post 명령이 완료 되면 서버에서 어떤 객체를 돌려보내는데, 그 객체안에는 

 

여기서 M9S~에 해당하는 자체 생산 키가 딸려서 온다.

정확히는 키값은 value의 body 값에 json화된 map형태로 온다. 

 

point 6) 우리는 then을 통해, 날라온 키 값을 product의 id로도 활용할 수 있다.

 - 당연히 활용하려면 decode를 해야 한다.

 - json.decode(value.body)['name'] 을 통해 접근이 가능하다.

 - 우린 memory내부에 저 id를 통해 product data에 접근이 가능하며 이렇게 하면 server측 id와, client측 id를 비교하는 절차를 없앨 수 있어서 편리하다.

 

 

 

반응형
Comments