firebase SDK 없이 flutter에서 firestore에 post요청 보내기
Computer 비관심/Flutter2020. 11. 26. 00:29
반응형
실시간 기능도 필요 없어서 SDK를 사용하고 싶지 않았다.
그냥 간단하게 요청하여 필요한 데이터를 json현태로 받고 싶었다. 그런데 flutter 자료가 아직 많지 않아서 해맷다.
1. 일단 http 요청을 하기위해서 http모듈을 임포트 하였다.
import 'package:http/http.dart' as http;
2. 아래와 같이 GET 요청을 보내게 되면 모든 documents를 불러오게 된다.
https://firestore.googleapis.com/v1/projects/프로젝트명/databases/(default)/documents
다큐먼트를 모두 불러온 뒤 클라이언트에서 필터링하면 시간도 엄청나게 걸릴 뿐더러 차후 과금에 문제가 생긴다.
3. 파이어베이스의 structuredQuery를 사용하면 데이터를 반환받는 조건을 만들어서 보낼 수 있다.
cloud.google.com/firestore/docs/reference/rest/v1/StructuredQuery
아래는 이름을 검색해서 그 검색한 이름과 동일한 다큐먼트를 반환 하는 스트럭쳐드쿼리 예제이다.
1) projectID는 firestore의 프로젝트 이름
2) col은 colection이름
3) fielVal은 내가 찾을 값 (name 필드에서 value가 찾을 내용과 같은 다큐먼트를 필터해서 리턴)
4) body에 json.encode를 해야함.
dynamic response = await http.post(
'https://firestore.googleapis.com/v1/projects/' +
projectID +'/databases/(default)/documents:runQuery',
headers: {'Content-Type': 'application/json'},
body: json.encode({
'structuredQuery': {
'where': {
'fieldFilter': {
'field': {'fieldPath': 'name'},
'op': 'EQUAL',
'value': {'stringValue': '${fielVal}'}
}
},
'from': {'collectionId': '${col}'}
}
}));
'Computer 비관심 > Flutter' 카테고리의 다른 글
[플러터] stateless 위젯에서 controller 사용하기 (0) | 2021.04.10 |
---|---|
플러터에서 자식 위젯의 메서드 부모에서 호출하기 (0) | 2021.04.10 |
플러터에서 firebase_auth와 flask 서버 같이 사용하기. (0) | 2020.11.07 |
파이어베이스 로그인 (0) | 2020.11.06 |
플러터 스트럭처 만들기 작성중 (0) | 2020.11.03 |
댓글()