API 통신을 하다보면 동일한 주소로 method만 바꿔서 통신하는 게 보통이다.
이럴떄 보면 조금더 간편하게 할 수 없을까? 생각이 들때 사용하면 좋을 라이브러리이다.
물론 사용하지 않고 구현해도 문제는 없다.
[pub.dev]
examples 에 보면 다양한 사용법이 설명 되어 있다.
아래는 그걸 활용하여 만든 코드이다.
[구현 예시]
1. API 통신에 필요한 값들을 모아 요청 함수를 만든다.
Future<String> requestApi(String message) {
final Map<String, String> params = {
'api_key': 'API키',
'query': message
};
return httpCall(
baseURL,
method: "POST", // get, put, delete, patch 등등 변형 가능
data: params,
);
}
2. httpCall 이라고 실질적으로 통신하는 구간을 만든다.
안의 예시는 내가 통신을하면서 필요한 것들을 만들어 놓은 것으로 응답 값과 원하느 요청 값이 다르게 되면 개인에 맞춰 바꿔야한다!
Future<String> httpCall(String url, {
String method = 'GET',
Map<String, dynamic>? data,
}) async {
if (url.isEmpty) {
return '';
}
//dio객체 생성
var dio = Dio();
Response? response;
try {
switch (method) {
case 'GET':
{
response = await dio.get(url, queryParameters: data);
break;
}
case 'POST':
{
response = await dio.post(url, data: data);
break;
}
case 'PUT':
{
response = await dio.put(url, data: data);
break;
}
case 'DELETE':
{
response = await dio.delete(url, data: data);
break;
}
case 'PATCH':
{
response = await dio.patch(url, data: data);
break;
}
}
if (response != null) {
//이 부분은 각자의 응답에 맞춰서 변형
String? responseData = response.data;
responseData ??= '';
final result = {
'requestUrl': url,
'statusCode': response.statusCode ?? 0,
'statusMessage': response.statusMessage ?? '',
'data': responseData,
};
final jsonResult = jsonEncode(result);
return jsonResult;
}
} catch (e) {
print(e);
}
}
다음에는 Dio의 cancelToken 에 대하여 알아보쟈 ...
'Flutter' 카테고리의 다른 글
Flutter 네이버 그린닷 구현 (feat. 네이버 스마트렌즈) _ 1 (0) | 2024.10.07 |
---|---|
Flutter Textfield 키보드로 focus 이동 시키기 (feat. 로그인 창) (0) | 2024.09.26 |
ModalBarrier 활용하기 (0) | 2024.09.02 |
Flutter 녹음 시 동그란 파동 웨이브 구현 (round_wave) (0) | 2024.08.22 |
Flutter 모달창이 끝난 후 함수 실행하기 (0) | 2024.08.21 |