Group Study (2024-2025)/Android

[Android] Retrofit2를 활용한 서버통신

z_ero 2024. 10. 29. 03:29

코어멤버님이 정리해주신 노션 내용을 참고하여 공부했습니다.

서버와의 연결 & RESTful API 이해하기 

프론트 개발자에게 서버와의 연결은 중요한 부분입니다. 안드로이드에서는 Retrofit2 라이브러리를 통해 서버 API와 연결하는데요. 처음엔 복잡해 보일 수 있으나, 익숙해지면 백엔드와의 연결이 수월해집니다. 이번 글에서는 서버 통신 개념부터 실습 도구까지 다뤄볼 예정입니다.

 

서버 통신 기초 개념 

 

📌 HTTP (HyperText Transfer Protocol)

  • HTTP는 클라이언트와 서버 간 정보를 요청(request)하고 응답(response)하기 위한 프로토콜임.
  • 특징: 클라이언트가 요청해야 서버가 응답을 보내는 단방향 통신 구조임.

 

📄 HTTP 메시지 구조

  • start-line
    • 요청 메시지: HTTP Method, 요청 경로, HTTP-Version
    • 응답 메시지: HTTP-Version, HTTP Status Code
      • HTTP Status Code 예시:
        • 1xx: 정보 제공
        • 2xx: 성공
        • 3xx: 리다이렉션
        • 4xx: 클라이언트 오류
        • 5xx: 서버 오류
  • Header: 요청에 대한 정보가 포함된 부분임.
  • message body: 전송할 실제 데이터를 담는 부분임 (JSON, 이미지, HTML 등)

 

🌐 HTTP Method 종류

HTTP Method는 서버가 수행할 동작을 지정함.

  • POST: 데이터 등록
  • GET: 데이터 조회
  • DELETE: 데이터 삭제
  • PATCH: 데이터 부분 변경
  • PUT: 데이터 전체 수정 또는 생성

 

💡 HTTP Method를 통해 CRUD (Create, Read, Update, Delete) 연산을 수행함.

 

📝 JSON (JavaScript Object Notation)

  • 자바스크립트 객체 표기법으로, 데이터를 교환하기 위한 형식임.
  • 구조: Key-Value 형태
      {
          "seminar_num": 4,
          "subject": "Server Connection"
      }

 

🔄 동기와 비동기 (Synchronous & Asynchronous)

동기 (Synchronous)

  • 요청과 결과가 동시에 일어나는 방식임.
  • 요청에 대한 결과가 올 때까지 기다림.

비동기 (Asynchronous)

  • 요청과 결과가 동시에 일어나지 않는 방식임.
  • 다른 작업을 병렬로 처리 가능하여 시간이 오래 걸리는 작업(서버 통신, 파일 입출력 등)에 적합함.

 

🌍 RESTful API 개념

REST 란?

  • RESTREpresentational State Transfer의 약자로, 자원을 이름으로 구분해 상태 정보를 주고받는 방식임.
  • 핵심 원칙:
    1. HTTP URI를 사용해 자원(Resource)을 명시함.
    2. HTTP Method (GET, POST, PUT, DELETE)로 해당 자원에 대한 CRUD 요청을 수행함.

REST 구성 요소

  1. 자원 (Resource): URI로 식별되는 자원 (예: /groups/group_id)
  2. 행위 (HTTP Method): 자원에 대한 행위(동작)를 정의함.
  3. 표현 (Representation): 자원의 상태를 JSON, XML 등 다양한 형태로 표현함.

REST API

  • REST 원칙을 기반으로 구현된 API로, 효율적이며 널리 사용되는 API 구조임.

 

🛠 서버 테스트 플랫폼

서버 API 테스트를 위해 많이 사용하는 도구를 소개함.

POSTMAN

  • Postman은 서버 API가 잘 작동하는지 테스트할 수 있는 도구임.
  • 예제:
    • Base URL: http://reqres.in/api/users
    • Query Params: page: Int
    • HTTP Method: GET

Swagger

  • 서버 API 문서화에 사용되는 오픈 소스 툴임.
  • API 명세서를 자동화해 클라이언트 개발자가 쉽게 테스트할 수 있음.

🔗 참고 링크