HTTP에 대해 설명해 주세요.

웹에서 클라이언트와 서버가 데이터를 주고받기 위한 응용 계층(Application Layer)의 통신 프로토콜입니다.

기본 동작

클라이언트 → [요청 Request]  → 서버
클라이언트 ← [응답 Response] ← 서버

주요 특징

특징설명
무상태 (Stateless)각 요청은 독립적, 이전 요청 정보를 저장하지 않음
비연결 (Connectionless)요청-응답 후 연결 종료 (HTTP/1.0 기준)
클라이언트-서버 구조역할이 명확히 분리됨

HTTP 메서드

메서드용도Body
GET리소스 조회X
POST리소스 생성O
PUT리소스 전체 수정O
PATCH리소스 일부 수정O
DELETE리소스 삭제X

상태 코드

범위의미예시
2xx성공200 OK, 201 Created
3xx리다이렉션301 Moved Permanently
4xx클라이언트 오류400 Bad Request, 401 Unauthorized, 404 Not Found
5xx서버 오류500 Internal Server Error

버전별 비교

버전특징
HTTP/1.0요청마다 연결/종료
HTTP/1.1Keep-Alive로 연결 재사용, 파이프라이닝
HTTP/2멀티플렉싱, 헤더 압축, 성능 대폭 향상
HTTP/3UDP 기반(QUIC), 더 빠른 연결

HTTP vs HTTPS

HTTPHTTPS
암호화XO (TLS/SSL)
포트80443
보안취약안전

Java 예시 (Spring)

@RestController
@RequestMapping("/api/users")
public class UserController {

    @GetMapping("/{id}")        // GET /api/users/1
    public UserDto getUser(@PathVariable Long id) { ... }

    @PostMapping               // POST /api/users
    public ResponseEntity<?> createUser(@RequestBody UserDto dto) {
        return ResponseEntity.status(201).body(savedUser);
    }

    @DeleteMapping("/{id}")    // DELETE /api/users/1
    public ResponseEntity<?> deleteUser(@PathVariable Long id) {
        return ResponseEntity.noContent().build(); // 204
    }
}

무상태 특성을 보완하기 위해 Cookie, Session, Token(JWT) 등을 활용합니다.

CSLOG에서 보기