-
Flutter_19. HTTP Requests> Frontend/Flutter 2023. 5. 31. 08:02
0. 학습내용
- Http Request
1. HTTP Request
1) http package 설치
2) http package 설치
import 'package:http/http.dart' as http;
3) FireBase > Realtime Database 생성 > (생략)4) Get Method 사용
void _loadItems() async { final url = Uri.https( 'URL 주소.app', '[firebase bucket 이름 ].json'); final response = await http.get(url); if (response.statusCode >= 400) { setState(() { _error = 'Failed to fetch Data'; }); } final Map<String, dynamic> listData = json.decode(response.body); final List<GroceryItem> loadedItems = []; for (final item in listData.entries) { final category = categories.entries .firstWhere( (catItem) => catItem.value.title == item.value['category']) .value; loadedItems.add(GroceryItem( id: item.key, name: item.value['name'], quantity: item.value['quantity'], category: category)); } setState(() { _groceryItems = loadedItems; _isLoading = false; }); }
- Uri .https 를 사용하여, params 로 주소와 [이름].json을 을 넣어주고, 해당 값을 보내준다 (get으로).
5) Delete Method 사용
final url = Uri.https( 'URL 주소', '[firebase bucket 이름 ]/${id값}.json'); final response = await http.delete(url);
6) Post Method 사용
final url = Uri.https( 'URL 주소.app', '[firebase bucket 이름 ].json'); final response = await http.post(url, headers: {'Content-Type': 'application/json'}, body: json.encode({ 'name': _enteredName, 'quantity': _enteredQuantity, 'category': _selectedCategory.title, })); final Map<String, dynamic> resData = json.decode(response.body);
- Request를 보낼 때, headers | body에 값을 넣어서 보낸다.
- Post 방식의 경우, 기본적으로 HTTP Package는 기본적으로 serialized format (예:JSON 형식)의 값을 받기를 기대하기 때문에,
json.encode({...})를 통해 obj 값을 JSON 형식으로 변경.
'> Frontend > Flutter' 카테고리의 다른 글
Flutter_18. App State_Provider(feat. Riverpod) (0) 2023.05.21 Flutter_17. GridView & Inkwell & FadeImage & Stack (0) 2023.05.17 Flutter_16. Flutter Internals, Way of Render with Tree, Key, Mutating Values (0) 2023.05.16 Flutter_15. Building Responsive and adaptive User Interfaces (0) 2023.05.15 Flutter_14. Theme in Widget & Dark Mode & Named Constructor & For in (0) 2023.05.12