[Flutter] 플러터에서의 Database연동 및 API 통신
반응형
플러터를 포함한 모바일 개발시 DB를 직접 넣어선 안된다.
디컴파일이 되어 db정보를 노출할 수 있기 때문인데,
때문에 플러터에서 database를 직접 연동하기 위해선 앱 내부에서만 사용하는 로컬 Database를 사용하는 방법과
API서버를 통한 API 통신을 하는 방법이 있다.
이중 API통신에 대해서 작성하였다.
먼저 http 라이브러리의 의존성을 추가해준다.
http: ^0.13.5
소스에 http.dart를 가져와
import 'package:http/http.dart' as http;
body에 날려 보내는방법, url에 파라미터로 날리는 방법 등 자바, C#등에서 사용하는 방법으로 전부 사용 가능하다.
1. GET
class AdvAPI {
Future<List<AdvModel>> getAdvertisement(String link) async {
final response = await http.get(Uri.parse("${SERVER_URL}${link}"));
print('response.body : ${response.body}');
if (response.statusCode == 200) {
List<dynamic> jsonList = jsonDecode(utf8.decode(response.bodyBytes));
List<AdvModel> advList =
jsonList.map((json) => AdvModel.fromJson(json)).toList();
return advList;
} else {
throw Exception('Failed to load wine types');
}
}
}
2.POST
Future<List<AeratorModel>?> className(String link, Model model) async {
var url = Uri.parse(
'${SERVER_URL}{link}?uuid=${LoginStatus().user_uuid}');
var headers = {'Content-Type': 'application/json'};
var response = await http.post(url,
headers: headers, body: jsonEncode(model.toJson()));
if (response.statusCode == 200) {
if (response.body.isNotEmpty) {
List<dynamic> result = jsonDecode(utf8.decode(response.bodyBytes));
List<AeratorModel> aeratorList =
result.map((e) => AeratorModel.fromJson(e)).toList();
return aeratorList;
} else {
return null;
}
// HTTP 요청이 성공적으로 처리됐을 때
} else if (response.statusCode == 404) {
return null;
} else {
// HTTP 요청이 실패했을 때
throw Exception('Failed to load screens');
}
}
3. DELETE
Future<void> className(String link,String userAeratorUuid) async {
final url = Uri.parse('${SERVER_URL}{link}');
final response = await http.delete(
url,
body: {'userAeratorUuid': userAeratorUuid},
);
if (response.statusCode == 200) {
// 성공적으로 삭제되었을 경우 실행할 코드 작성
print('추가 성공');
} else {
// 삭제 실패시 실행할 코드 작성
}
}
반응형
'Study > Flutter' 카테고리의 다른 글
[Flutter] Flutter blue Plus 1.30.7 버전 기준 연결 예제 (0) | 2023.12.26 |
---|---|
[Flutter] TextFormField을 Custom하여 사용하기. (0) | 2023.11.24 |
[Flutter] SharedPreferences를 사용한 자동 로그인 구현 (0) | 2023.08.16 |
[Flutter] 다국어 지원 (0) | 2023.07.05 |
[Flutter] 플러터 블루투스 연결 구현 #5 Notify, Write 구현 (0) | 2023.03.10 |
댓글