> Frontend/Flutter
Flutter_19. HTTP Requests
Janku
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 형식으로 변경.