반응형
dio와 http는 Dart 언어를 위한 패키지로, 둘 다 HTTP 요청을 다루는 라이브러리입니다. Flutter에서 웹 서비스와 통신할 때 사용됩니다. 그럼에도 불구하고 이 두 라이브러리에는 몇 가지 차이점이 있습니다.
- 기능의 풍부함:
- dio: dio는 http보다 기능이 풍부하며, 요청 취소, FormData, Response 인터셉터, Global(전역) 인터셉터, 파일 업로드/다운로드 등과 같은 고급 기능을 제공합니다.
- http: 기본적인 HTTP 클라이언트 기능을 제공합니다. dio보다 간단한 사용 사례에 적합합니다.
- 유연성:
- dio: 맞춤 인터셉터를 추가할 수 있어 HTTP 요청 및 응답을 쉽게 수정하거나 검사할 수 있습니다.
- http: 이런 유연성은 제공되지 않습니다.
- 에러 처리:
- dio: 더 세밀한 에러 처리를 제공하며, 시간 초과이나 네트워크 에러 등 다양한 유형의 에러를 구별할 수 있습니다.
- http: 기본적인 에러 처리만 제공합니다.
- 기타 기능:
- dio: 요청을 취소하는 기능, FormData를 사용하여 multipart/form-data 요청을 보내는 기능 등의 추가적인 기능들을 제공합니다.
- http: 이러한 추가 기능은 제공되지 않습니다.
결론적으로, 간단한 HTTP 요청이 필요한 경우 http 패키지를 사용할 수 있습니다. 그러나 더 복잡한 기능이나 높은 유연성이 필요한 경우 dio 패키지를 고려해볼 만합니다.
CRUD 예시
import 'dart:convert';
import 'package:http/http.dart' as http;
class HttpService {
final String baseUrl = "https://example.com/api";
Future<void> createData(String data) async {
await http.post(Uri.parse("$baseUrl/create"), body: {"data": data});
}
Future<void> readData(String id) async {
final response = await http.get(Uri.parse("$baseUrl/read/$id"));
return jsonDecode(response.body);
}
Future<void> updateData(String id, String newData) async {
await http.put(Uri.parse("$baseUrl/update/$id"), body: {"data": newData});
}
Future<void> deleteData(String id) async {
await http.delete(Uri.parse("$baseUrl/delete/$id"));
}
}
import 'package:dio/dio.dart';
class DioService {
final Dio dio = Dio();
final String baseUrl = "https://example.com/api";
Future<void> createData(String data) async {
await dio.post("$baseUrl/create", data: {"data": data});
}
Future<void> readData(String id) async {
final response = await dio.get("$baseUrl/read/$id");
return response.data;
}
Future<void> updateData(String id, String newData) async {
await dio.put("$baseUrl/update/$id", data: {"data": newData});
}
Future<void> deleteData(String id) async {
await dio.delete("$baseUrl/delete/$id");
}
}
Future<void> fetchData() async {
final response = await http.get(Uri.parse("https://example.com/api/data"));
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception('Failed to fetch data');
}
}
Future<void> fetchData() async {
final response = await dio.get("https://example.com/api/data");
return response.data;
}
API 패키지에서 dio가 http 상위호환 더 다양한 기능을 제공한다.
반응형
'Flutter-플러터 > 플러터 공부' 카테고리의 다른 글
Flutter m1,m2 pod install 펌 (1) | 2023.10.05 |
---|---|
Flutter 카카오맵 - 타다 참고 (0) | 2023.09.26 |
Flutter- http 분기처리 (0) | 2023.09.19 |
Flutter Stack 과 Container (0) | 2023.09.09 |
Flutter - Http get, post (0) | 2023.09.01 |