REST API

박진·2026년 1월 26일

2026.01.26 (월)

REST API


오늘의 공부 이미지 💫


👉🏼👈🏼 REST API ?

REST API는 HTTP 프로토콜의 장점을 최대한 활용하여, 서버에 있는 자원(Resource)에 접근하는 방식을 정의한다.

  • 자원(Resource): 서버에 저장된 데이터(예: 사용자 정보, 게시글, 이미지 등)를 의미한다.
  • 행위(Verb): HTTP 메서드(GET, POST 등)를 통해 자원에 무엇을 할지 결정한다.
  • 표현(Representation): 자원의 상태를 JSON 같은 형태로 전달한다.

💾 주요 구성 요소 (HTTP 메서드)

▪️ GET 데이터 조회: 서버에서 정보를 가져올 때 사용함
▪️ POST 데이터 생성: 서버에 새로운 정보를 등록할 때 사용함
▪️ PUT 데이터 전체 수정: 기존 정보를 새로운 정보로 완전히 교체할 때 사용함
▪️ PATCH 데이터 일부 수정: 기존 정보 중 특정 부분만 바꿀 때 사용함
▪️ DELETE 데이터 삭제: 서버의 특정 정보를 삭제할 때 사용함


💾 REST API 왜 사용할까?

  • 독립성: 클라이언트(앱)와 서버가 서로 어떻게 구현되어 있는지 몰라도 상관없다 API 명세만 맞으면 통신이 가능하기 때문!
  • 범용성: HTTP를 사용하기 때문에 웹이나 모바일 기기 등 어디서나 사용 가능하다
  • 확장성: 서버 구조를 변경해도 API 주소만 유지된다면 클라이언트는 영향받지 않는다

💾 REST API 언제 사용할까?

  • Flutter 앱에서 서버에 저장된 사용자 프로필 정보를 가져올 때
  • 쇼핑몰 앱에서 상품 목록을 불러오거나 주문을 전송할 때
  • 기상청 서버로부터 실시간 날씨 데이터를 받아올 때

🕹 사용방법

// 1. 서버 주소(URL) 정의
var url = Uri.parse('https://api.example.com/users/1');

// 2. GET 요청 보내기
var response = await http.get(url);

// 3. 응답 처리
if (response.statusCode == 200) {
  // 성공 (200 OK)
  print('데이터: ${response.body}');
} else {
  // 실패
  print('에러 발생: ${response.statusCode}');
}

⌨️ 주요 상태 코드

  • 200 - OK 요청 성공.
  • 201 - Created 요청 성공. 새로운 리소스가 생성되었을 때
  • 400 - Bad Request 요청 실패. 클라이언트가 요청 Body에 잘못된 데이터 줬을때
  • 401 - Unauthorized 인증되지 않음. 로그인 안되었을때.(로그인 후 Header에 정보 넣어줘야함)
  • 403 - Forbidden 리소스 접근 금지됨. 로그인 했지만 접근할 권한 없을때. 예를들어 다른 회원의 블로그글 수정하려할 때
  • 404 - Not Found 리소스 없음. URL이 잘못되었거나 URL은 정상이지만 서버 내 데이터가 없을 때
  • 405 - Method Not Allowed 메소드 잘못 보냈을때
  • 409 - Conflict 요청 수행 시 서버에서 충돌 날 때. 예를들어 회원가입 시 id에 중복된 아이디로 회원가입 시도할 경우
  • 500 - Internal Server Error 서버에서 에러 났을때

0개의 댓글