728x90
반응형

📡 “404야, 내 마음도 Not Found다...”


✅ HTTP 상태코드란?

서버가 클라이언트의 요청에 대해 어떤 결과를 돌려줬는지 알려주는 숫자 코드입니다.

예를 들어...

  • "응, 잘 받았어!" → 200 OK
  • "어..? 너 누구?" → 401 Unauthorized
  • "뭐라는 거야?" → 400 Bad Request

🎯 상태코드는 크게 5가지로 나뉩니다

범위의미예시
1xx 정보 거의 안 씀
2xx 성공 200, 201, 204
3xx 리다이렉트 301, 302, 304
4xx 클라이언트 에러 400, 401, 403, 404
5xx 서버 에러 500, 502, 503, 504
 

🔵 2xx: 성공했어요!

코드의미설명
200 OK 정상 처리 완료 제일 자주 보는 성공 코드
201 Created 생성됨 POST로 새 리소스 생성 시
204 No Content 응답 본문 없음 처리는 됐지만 줄 말은 없음
 

🟡 3xx: 어이쿠! 이리로 와요~

코드의미설명
301 Moved Permanently 영구 이동 브라우저 캐싱까지 함
302 Found 임시 이동 예전에는 흔히 사용했음
304 Not Modified 변경 없음 캐시 덕에 통신량 절약~
 

🔴 4xx: 너가 잘못했어 (Client Error)

코드의미설명
400 Bad Request 요청이 이상해요 문법 오류, 파라미터 실수 등
401 Unauthorized 인증 필요해요 토큰 없어! 로그인 먼저!
403 Forbidden 권한 없어 있어도 안돼요 ❌
404 Not Found 찾을 수 없어요 페이지 없어… 내 인생도...
 

⚫ 5xx: 서버가 잘못했어요 (Server Error)

코드의미설명
500 Internal Server Error 서버가 터졌어요 💥 대표적인 오류 코드
502 Bad Gateway 게이트웨이 문제 보통 nginx랑 친함
503 Service Unavailable 잠시만요~ 서버 과부하, 점검 중
504 Gateway Timeout 응답 없어요 서버가 너무 느림... zzz
 

😂 코드별 상황극 예시

[404 Not Found]
👉 너 걔 봤어?
👤 누구?
👉 내 미래.
[403 Forbidden]
👉 사장님, 이 폴더 좀 볼게요.
👤 ...너 권한 없어. 꺼져.

🔐 상태코드, 실무에선 이렇게 써요!

  • API 응답에 반드시 상태코드 명확히 반환
  • 정상 처리: 200 또는 201
  • 예외 처리: 400, 401, 403, 500 등 구분
  • 프론트와 협업 시 명확한 상태 정의 문서 공유 필요
728x90
반응형
728x90
반응형

RESTful API는 웹 개발자라면 반드시 알아야 할 핵심 기술입니다.


✅ REST란 무엇인가요?

**REST(Representational State Transfer)**는 2000년에 로이 필딩(Roy Fielding)이 논문에서 처음 제안한 아키텍처 스타일입니다.
쉽게 말해, 웹에서 자원을 HTTP 방식으로 다루는 표준화된 방법이라고 생각하시면 됩니다.


📌 REST의 6가지 핵심 제약조건

제약 조건설명
1. 클라이언트-서버 구조 역할을 분리하여 유지보수성과 확장성 향상
2. 무상태(Stateless) 요청 간 서버는 클라이언트 상태를 저장하지 않음
3. 캐시 처리 가능 응답 데이터는 캐싱될 수 있어야 함
4. 계층화 시스템 중간 서버를 통해 확장 구조 구성 가능
5. 인터페이스 일관성 URI, HTTP 메서드 등 통일된 사용법 준수
6. 코드 온 디맨드 (선택사항) 서버가 클라이언트에 스크립트 전송 가능
 

🧭 RESTful API란?

REST 원칙을 따르는 API를 말합니다. 즉, HTTP 메서드와 URL을 이용해 자원을 CRUD 방식으로 처리하는 것이죠.


🚀 RESTful API 예제

가상의 블로그 게시글(Post)에 대한 API를 설계한다고 가정해볼게요.

기능HTTP 메서드URI설명
목록 조회 GET /posts 모든 게시글 조회
단일 조회 GET /posts/{id} 특정 게시글 조회
작성 POST /posts 게시글 작성
수정 PUT /posts/{id} 게시글 전체 수정
삭제 DELETE /posts/{id} 게시글 삭제
 

🔄 RESTful 하지 않은 API 예시

GET /getPosts
POST /createPost
  • ❌ 이런 방식은 RESTful하지 않습니다.
  • ✅ RESTful 방식은 명사 중심 URI와 HTTP 메서드를 적절히 사용하는 것이 핵심입니다.

💡 RESTful API 설계 시 팁

  • URI에는 동사 대신 명사 사용
  • URI는 소문자 사용
  • 언더스코어(_)보단 하이픈(-) 사용 권장
  • 응답 상태 코드 (200, 201, 400, 404 등) 정확히 설정
  • 예외 응답은 JSON 형태로 일관되게 처리

🛠️ RESTful API 구현 프레임워크

  • Spring Boot (Java)
  • Express (Node.js)
  • Flask / Django REST Framework (Python)
  • FastAPI (Python, 최신 트렌드)
  • Laravel (PHP)
728x90
반응형
728x90
반응형

📋 본문

오늘은 많은 백엔드/프론트엔드 개발자분들이 헷갈려하는 개념, StatefulStateless의 차이점에 대해 설명드리려 합니다.
서버 아키텍처를 설계할 때 정말 자주 나오는 주제이니, 끝까지 읽어보시면 많은 도움이 되실 거예요!


✅ 1. 정의부터 확실하게!

구분StatefulStateless
의미 서버가 클라이언트 상태(Session, Cookie 등)을 기억함 서버가 클라이언트 상태를 기억하지 않음
연결 방식 지속적인 연결 유지 요청마다 연결 후 즉시 종료
정보 유지 이전 요청 상태 저장 매 요청 시 모든 정보를 포함해야 함
 

✅ 2. 장단점 비교

🔹 Stateful

  • 장점:
    • 로그인 상태 유지 등 기능 구현이 쉬움
    • MMORPG 같은 실시간 상호작용 서비스에 유리
  • 단점:
    • 서버에 리소스 부담
    • 서버 간 세션 공유 어려움 → Scale-out 불리

🔹 Stateless

  • 장점:
    • 서버 확장, 로드밸런싱, 캐시 활용 용이
    • REST API, 클라우드 환경에 적합
  • 단점:
    • 매 요청 시 상태 정보 포함 → 네트워크 자원 사용 ↑
    • 클라이언트 측 부담 ↑

✅ 3. 서비스 예시로 이해하기

서비스 예시적합한 방식
MMORPG 게임 서버 ✅ Stateful
REST API 기반 웹 서비스 ✅ Stateless
IoT 실시간 데이터 수신 서버 ✅ Stateful
블로그, 커머스 등 일반 웹 서버 ✅ Stateless
 

✅ 4. 기술적 이슈 요약

이슈설명
Scale-out Stateful은 세션 동기화 어려움
CSRF 세션 인증 방식의 보안 취약점
CORS 도메인 간 요청 제약 발생 가능
REST API Stateless 원칙 준수 필요
 

✅ 5. 마무리 요약

  • Stateful: 기능 구현은 쉽지만 서버에 부담, 확장성 떨어짐
  • Stateless: 구현 복잡하지만 성능, 확장성, 클라우드에 유리
  • 선택 기준: 서비스의 실시간성/확장성/안정성에 따라 결정!
728x90
반응형
728x90
반응형

HTTP 요청 방식인 GET과 POST는 웹 개발자에게 매우 익숙한 개념이지만, 실제로 데이터를 어떻게 전달하는지 정확히 알고 계신가요? 이 글에서는 GET과 POST의 데이터 전달 차이점을 구조적으로 정리해 드립니다.


✅ 1. GET 요청 – 쿼리 파라미터 방식

  • 형식:
    GET /url?username=kim&age=20
  • 특징
    • 데이터가 URL에 포함되어 전송
    • 브라우저 주소창에 보임
    • 캐시 저장 가능, 북마크 가능
    • 전송 데이터 길이에 제한 있음
  • 사용 예
    • 검색, 목록 필터링 등 조회 요청
    • 데이터 변경이 없는 요청

✅ 2. POST 요청 – HTML Form 방식

  • Content-Type: application/x-www-form-urlencoded
  • 형식:
    username=kim&age=20
    (HTTP Body에 담겨 전송)
  • 특징
    • 주로 HTML <form> 태그에서 사용
    • URL이 아닌 메시지 바디에 데이터 포함
    • GET보다 보안성이 높음 (노출되지 않음)
  • 사용 예
    • 회원가입, 로그인, 주문 등 사용자 입력 전송

✅ 3. POST/PUT/PATCH – HTTP API 방식 (JSON 전송)

  • Content-Type: application/json
  • 형식 예시:
{
  "username": "kim",
  "age": 20
}
  • 특징
    • REST API, 비동기 통신(AJAX)에서 일반적
    • JSON 외에도 XML, TEXT 가능
    • 구조적이고 유연한 데이터 전송 가능
  • 사용 예
    • 프론트엔드 → 백엔드 API 통신
    • 모바일 앱, SPA 등에서 서버로 데이터 전달 시

📚 요약 비교 표

구분전송 위치데이터 형식주요 용도
GET URL 쿼리 ?key=value 조회, 검색
POST (Form) HTTP Body key=value 회원가입, 로그인
POST/PUT (API) HTTP Body JSON 등 REST API 통신
 

🎯 결론

  • 단순 조회는 GET
  • 폼 전송은 POST (x-www-form-urlencoded)
  • REST API 통신은 JSON 기반 POST/PUT/PATCH

요청 목적과 환경에 따라 적절한 방식을 선택하는 것이 중요합니다.

728x90
반응형

+ Recent posts