Flutter에서 HTTP로 서버 데이터 불러오기 — 작은 연결이 만들어내는 큰 변화

2025. 5. 19. 16:40·Flutter
728x90
반응형

Flutter를 공부하면서 처음 서버와 연결해 데이터를 주고받는 순간, 나는 진짜 앱을 만드는 느낌을 받았다.
이 작은 연결 하나가 사용자와 데이터를 이어주고, 앱의 생명을 불어넣는다는 걸 느꼈달까.


🌐 HTTP 통신이란?

HTTP는 HyperText Transfer Protocol의 약자로, 웹에서 정보를 주고받기 위한 약속이다.
Flutter에서는 http 패키지를 사용해서 이 통신을 쉽게 처리할 수 있다.

🔧 http 패키지 설치

dependencies:
  http: ^0.13.6

설치 후엔 꼭 flutter pub get을 실행하자!

🚀 GET 요청 보내기

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String data = "데이터를 불러오는 중...";

  @override
  void initState() {
    super.initState();
    fetchData();
  }

  Future<void> fetchData() async {
    final url = Uri.parse('https://jsonplaceholder.typicode.com/posts/1');
    final response = await http.get(url);

    if (response.statusCode == 200) {
      final json = jsonDecode(response.body);
      setState(() {
        data = json['title'];
      });
    } else {
      setState(() {
        data = "데이터 불러오기 실패";
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("서버 데이터 연결")),
      body: Center(child: Text(data)),
    );
  }
}

📮 POST 요청 보내기

Future<void> sendData() async {
  final url = Uri.parse('https://jsonplaceholder.typicode.com/posts');
  final response = await http.post(
    url,
    headers: {'Content-Type': 'application/json; charset=UTF-8'},
    body: jsonEncode({
      'title': 'Flutter와 서버',
      'body': '이건 테스트 POST 요청입니다.',
      'userId': 1,
    }),
  );

  if (response.statusCode == 201) {
    print('전송 성공!');
  } else {
    print('전송 실패');
  }
}

🧠 jsonDecode / jsonEncode의 역할은?

  • jsonDecode() → 서버에서 받은 문자열을 Dart 객체(Map)로 바꿔준다
  • jsonEncode() → Dart 객체를 JSON 문자열로 바꿔준다

💡 Tip: 예외 처리도 중요해요!

try {
  final response = await http.get(url);
  if (response.statusCode == 200) {
    // 성공 처리
  } else {
    throw Exception('서버 에러: ${response.statusCode}');
  }
} catch (e) {
  print("예외 발생: $e");
}

📌 마치며

Flutter로 서버와 데이터를 주고받는 방법은 생각보다 간단하지만,
이 간단한 연결이 사용자 경험을 결정짓는 중요한 기술이라는 걸 잊지 말자.

조금씩, 천천히. 우리는 연결의 기술을 배워가고 있다. 🌱

✍️ 이 글은 터미널 밖으로 나온 개발자의 Flutter 여정입니다.

728x90
반응형

'Flutter' 카테고리의 다른 글

Flutter와 네이티브의 연결고리 — Platform Channel 실전 입문  (2) 2025.05.22
CustomPainter 완전 정복 — Flutter에서 나만의 캔버스를 그려보자  (0) 2025.05.22
Flutter 애니메이션 & 전환 효과 완전 정복 — 감성을 더한 부드러운 움직임 만들기  (0) 2025.05.16
Flutter에서 화면 전환은 이렇게! – Navigator 완전 정복 🌈  (0) 2025.05.15
Flutter ListView로 다이나믹 UI 만들기 — 반복되는 위젯을 더 똑똑하게 그리는 법  (0) 2025.05.15
'Flutter' 카테고리의 다른 글
  • Flutter와 네이티브의 연결고리 — Platform Channel 실전 입문
  • CustomPainter 완전 정복 — Flutter에서 나만의 캔버스를 그려보자
  • Flutter 애니메이션 & 전환 효과 완전 정복 — 감성을 더한 부드러운 움직임 만들기
  • Flutter에서 화면 전환은 이렇게! – Navigator 완전 정복 🌈
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails N
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter
    메모앱
    백엔드개발
    flutter개발
    다크모드
    UI디자인
    코드를걷는사람
    flutter게시판
    flutter상태관리
    table_calendar
    Firebase
    flutterui
    뉴스앱
    정적사이트
    flutter디자인
    RubyOnRails
    fluttertips
    날씨앱
    캘린더앱
    Nextjs
    감성앱
    ActiveRecord
    북마크기능
    개발블로그
    모바일앱개발
    flutter앱개발
    openweather
    rails보안
    flutter기초
    UIUX
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
Flutter에서 HTTP로 서버 데이터 불러오기 — 작은 연결이 만들어내는 큰 변화
상단으로

티스토리툴바