📘 1. HTTP/1.1 vs HTTP/2 차이점
항목 | HTTP/1.1 | HTTP/2 |
요청 처리 | 한 커넥션에 1개 요청 (직렬 처리) | 하나의 커넥션에서 여러 요청 동시 처리 (멀티플렉싱) |
헤더 | 텍스트 기반, 중복 많음 | 바이너리 기반, 헤더 압축됨 (HPACK) |
속도 | 느림, 병목 현상 있음 | 빠름, 네트워크 효율성↑ |
서버 푸시 | 없음 | 있음 (클라이언트 요청 전에 서버가 자원 미리 보내줌) |
🧠 예시:
HTTP/1.1은 JS, CSS, 이미지 등 리소스를 동시에 로딩 못 해서 느림
→ 그래서 스프라이트 이미지, JS 번들링 같은 최적화 기법이 필요했어.
🔒 2. HTTPS 동작 원리 (TLS handshake)
클라이언트-서버 간 암호화된 통신을 가능하게 해줌.
⛓️ 과정 요약:
- 클라이언트 → 서버: "너 인증서 보여줘"
- 서버 → 클라이언트: "이게 내 공개키(SSL 인증서)"
- 클라이언트: "좋아, 대칭키 만들 테니까 너한테 암호화해서 보낼게"
- 서버: "대칭키 받았어, 이제 이 키로 서로 암호화해서 통신하자!"
🔐 핵심 개념
- 비대칭키 (RSA): 대칭키를 안전하게 주고받는 데 사용
- 대칭키 (AES): 실제 데이터 전송 시 사용 → 빠름
- 인증서: 서버가 신뢰할 수 있는 곳인지 확인 (CA 발급)
📌 도구 추천:
- https://www.ssllabs.com/ssltest/ ← 사이트의 HTTPS 보안 수준 확인
💡 3. RESTful API 설계 규칙
REST는 자원을 URL로 표현하고, HTTP 메서드로 행위 표현하는 스타일
🎯 기본 규칙
- 자원(Resource) 는 복수형 명사 사용
✅ /users, /posts/1/comments - 동사는 URL이 아니라 메서드에 맡긴다
❌ /getUser, /createPost
✅ GET /users, POST /posts
🔄 메서드별 의미
메서드동작
GET | 조회 |
POST | 생성 |
PUT | 전체 수정 |
PATCH | 부분 수정 |
DELETE | 삭제 |
🔐 인증/인가는 어떻게?
- Authorization: Bearer {token} 헤더로 처리
- 유저 권한이 없을 땐 403 Forbidden, 로그인 필요 시 401 Unauthorized
📦 상태 코드 제대로 쓰자
- 201 Created → 리소스 생성 성공 시
- 204 No Content → 삭제 성공, 반환 값 없음
- 422 Unprocessable Entity → 유효성 검증 실패
🧩 4. RESTful API 실전 설계 팁
✅ 1. 계층적 자원 표현
- /users/1/posts/5/comments/7
✅ 2. 필터링, 정렬, 페이징은 쿼리 파라미터로
GET /posts?sort=likes&limit=10&page=2
✅ 3. 에러 응답 형식 통일
{
"status": 400,
"message": "이메일은 필수 입력입니다",
"code": "ERR_REQUIRED_EMAIL"
}
✅ 4. HATEOAS (심화)
- 응답 안에 다음 요청 URL 포함 → 자동 탐색 가능
{
"id": 1,
"name": "BG",
"links": [
{ "rel": "self", "href": "/users/1" },
{ "rel": "posts", "href": "/users/1/posts" }
]
}
'개발' 카테고리의 다른 글
HTTP에서 꼭 알아야 할 핵심 요소들에는 어떤 것들이 있을까 (0) | 2025.04.08 |
---|---|
왜 개발자는 HTTP를 알아야 할까 (0) | 2025.04.08 |
인코딩 설정이 달라 한글 문자열이 깨지는 현상 개선 (2) | 2024.06.07 |
가비아 SSL 인증서 설치하기 (0) | 2024.04.29 |
MSSQL 함수 톺아보기(getdate(), dateadd(), convert(), LEFT()) (0) | 2024.04.02 |