반응형
Notice
Recent Posts
Recent Comments
Link
- Today
- Total
04-15 13:59
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- swiftUI
- substr
- scheduledTimer
- rxswift
- HTTP
- r
- Observable
- 오블완
- Python
- deeplearning
- SQL
- 시각화
- MVC
- cocoapods
- decode
- Optional
- 연산자
- 딥러닝
- ReLU
- ios
- struct
- barplot
- Request
- tapply
- rest api
- 명령어
- sigmoid
- SWIFT
- 티스토리챌린지
- Linux
Archives
iOS 개발 기록 블로그
HTTP의 정의, 기본 작동 원리, 요청/응답 구조, HTTP/HTTPS 본문
반응형
첫날 공부했던 것과 관련하여 쉽게 개요에 대해 다시 한번 정리해보겠습니다.
HTTP의 정의
HTTP(HyperText Transfer Protocol)는 웹에서 데이터를 주고받는 프로토콜입니다.
우리가 브라우저에서 웹사이트를 열 때, 앱에서 데이터를 가져올 때 이 HTTP가 동작합니다.
HTTP의 기본 작동 원리
HTTP는 클라이언트의 요청과 서버의 응답 사이의 대화 방식입니다.
- 클라이언트: Request(요청) 보내는 주체
- 서버: 요청을 받아서 Response(응답)을 보내는 주체
클라이언트의 예시로는 웹 브라우저, 모바일 앱,
서버의 예시로는 웹사이트의 데이터를 저장하고 있는 서버입니다.
Request와 Response의 구조
Request (요청)
- 구조
HTTP 메서드 + URL + 헤더 + 바디
- 예제
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
- GET: HTTP 메서드 (요청의 종류)
- /index.html: URL (요청 대상)
- Host: 서버 주소
- User-Agent: 클라이언트 정보 (예: 브라우저 종류)
- HTTP/1.1: 현재 널리 사용되는 HTTP 프로토콜 버전
Response (응답)
- 구조
상태 코드 + 헤더 + 바디
- 예제
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>..</html>
- 200 OK: 상태 코드 (요청 성공)
- Content-Type: 응답의 내용 타입 (예: text/html)
- <html>..</html>: 응답 데이터 (HTML 페이지)
HTTP 메서드
- GET: 데이터를 가져올 때
- 예: 웹 페이지 불러오기
- POST: 데이터를 서버로 보낼 때
- 예: 로그인 정보 전송
- PUT: 데이터를 새로 저장하거나 업데이트할 때
- 예: 프로필 정보 수정
- DELETE: 데이터를 삭제할 때
- 예: 게시글 삭제
HTTP 상태 코드 (Status Code)
- 200번대: 성공
- 예: 200 OK: 요청 성공
- 201 Created: 자원 생성 성공
- 204 No Content: 성공했지만 응답 본문 없음
- 300번대: 리다이렉션
- 301 Moved Permanently: URL이 바뀌었어요
- 302 Found: 임시로 다른 URL로 이동합니다
- 400번대: 클라이언트 오류
- 400 Bad Request: 요청 문법이 틀렸어요
- 401 Unauthorized: 인증 필요
- 403 Forbidden: 접근 권한이 없어요
- 404 Not Found: 요청한 URL이 없어요
- 500번대: 서버 오류
- 500 Internal Server Error: 서버에 문제가 있어요
제가 iOS 개발하면서 400 Bad Request 에러를 종종 본 적이 있습니다.
이는 아래와 같은 문제로부터 야기했을 수 있습니다.
- 잘못된 요청 데이터
- 요청 본문(JSON 등)이 형식에 맞지 않거나 Required 데이터 누락인 경우
- 쿼리 파라미터
- URL에 필요한 쿼리 파라미터가 잘못되었거나 빠져 있을 때
- 예: /search?query= (query 값이 비어 있음)
- 헤더 문제
- HTTP 요청에 필요한 헤더 누락인 경우 (예: 인증 헤더 Authorization이 없거나 잘못된 경우)
- URL 경로(Path) 오류
- 예: 서버는 /users/123을 기대했지만 클라이언트가 /users/abc를 요청
HTTP 상태 코드는 RFC 문서(웹 표준 규약 문서)에서 정의되어 있습니다.
서버 개발자가 커스터마이징하는 것은 가능하지만 웹 표준이므로 혼란과 호환성 문제를 줄 수 있기 때문에 신중히 해야 합니다.

HTTP와 HTTPS
- HTTP
- 데이터를 암호화하지 않고 주고 받음 (보안 약함)
- HTTPS
- 데이터를 암호화해서 주고 받음 (보안 강함)
- SSL/TLS 라는 기술을 사용해 데이터를 암호화합니다.
REST API와 HTTP
iOS 개발할 때 실제로 우리가 API 연결해왔었습니다.
저 같은 경우에는 생각 없이 Moya를 사용해서 API를 정의하고 요청/응답으로 값을 주고만 받았지, 그것이 어떤 방식으로 동작하는지, 그게 무엇인지 모르고 생각 없이 코딩만 해왔습니다.
익숙한 단어들이지만 뭔지 잘 몰랐던 부분에 대해서 이번 기회에 정리해보려고 합니다.
REST API는 HTTP를 이용해서 데이터를 주고받는 방식입니다.
- 예시
- 클라이언트: "유저 정보 주세요" → GET /users/123
- 서버: "여기 유저 정보 있어요" → 응답 (JSON 데이터)
다음 글에서 REST API에 대해서 조금 더 자세히 알아보려고 합니다.

반응형
'Back-end' 카테고리의 다른 글
Java, Spring 프레임워크 기초와 IoC, DI의 개념과 iOS 관련 예시로 이해하기 (1) | 2024.11.29 |
---|---|
REST API를 RxSwift+Moya 환경과 접목하여 알아보자 (0) | 2024.11.19 |
REST API 이해하기 (iOS URLSession 사용 예시 포함) (0) | 2024.11.18 |
HTTP/1.1은 무엇일까? (0) | 2024.11.17 |
오블완 챌린지 기념 iOS 개발자 서버 개발 찍먹 (5) | 2024.11.15 |