코어멤버님이 정리해주신 노션 내용을 참고하여 공부했습니다.
서버와의 연결 & 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
: 서버 오류
- HTTP Status Code 예시:
- 요청 메시지:
- 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 란?
- REST는 REpresentational State Transfer의 약자로, 자원을 이름으로 구분해 상태 정보를 주고받는 방식임.
- 핵심 원칙:
- HTTP URI를 사용해 자원(Resource)을 명시함.
- HTTP Method (GET, POST, PUT, DELETE)로 해당 자원에 대한 CRUD 요청을 수행함.
REST 구성 요소
- 자원 (Resource): URI로 식별되는 자원 (예:
/groups/group_id
) - 행위 (HTTP Method): 자원에 대한 행위(동작)를 정의함.
- 표현 (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
- Base URL:
Swagger
- 서버 API 문서화에 사용되는 오픈 소스 툴임.
- API 명세서를 자동화해 클라이언트 개발자가 쉽게 테스트할 수 있음.
🔗 참고 링크
'Group Study (2024-2025) > Android' 카테고리의 다른 글
[Android] 카카오뱅크 클론 코딩 (0) | 2024.11.20 |
---|---|
[Android] 스타일 가이드와 디자인 패턴 (3) | 2024.11.13 |
[Android] Preferences Datastore, Room을 활용한 로컬 데이터 저장 (3) | 2024.11.03 |
[Android] Android UI 구현 심화 (3) | 2024.10.16 |
[Android] Android UI 구현 기초 (0) | 2024.10.08 |