HTTP 강의

pharmDev·2024년 12월 25일

1. HTTP란?

  • 클라이언트와 서버 간의 통신 방식.
  • 요청(Request): 클라이언트가 서버로 데이터를 보내는 행위.
    예: 웹 브라우저에서 https://example.com/posts에 글 목록 요청.
  • 응답(Response): 서버가 클라이언트로 데이터를 돌려주는 행위.
    예: 서버에서 요청에 따라 글 목록(JSON 형식) 반환.
  • 요청과 응답 데이터는 일반적으로 JSON 형식을 사용.

2. JSON 구조

  • 맵(Map)과 유사한 키-값(Key-Value) 쌍 구조.
    {
      "name": "John Doe",
      "age": 30,
      "skills": ["JavaScript", "HTTP"],
      "address": {
        "city": "Seoul",
        "postalCode": "12345"
      }
    }
  • 키(Key): 문자열만 가능.
    예: "name", "skills", "address".
  • 값(Value): 숫자, 문자열, 리스트, 중첩 JSON 등 다양한 타입 허용.
    예: 30, ["JavaScript", "HTTP"], { "city": "Seoul" }.
  • 데이터는 전송 시 문자열(String)로 변환되고, 수신 후 다시 JSON으로 변환.

3. HTTP 요청(Request)의 구성 요소

  1. URL

    • 요청을 보낼 주소.
      https://example.com/api/users?page=2&sort=desc
      • 스킴(Scheme): http 또는 https
        예: https:// (보안 강화, 암호화된 통신).
      • 호스트(Host): 도메인명.
        예: example.com
      • 패스(Path): 리소스 위치.
        예: /api/users
      • 쿼리 파라미터(Query Parameter): 추가 데이터 전달.
        예: ?page=2&sort=desc (2페이지, 내림차순 정렬 요청).
  2. 메서드(Method)

    • 요청의 종류를 정의.
      • GET: 데이터를 조회.
        • 예: GET https://example.com/api/posts (모든 글 조회).
      • POST: 데이터를 생성.
        • 예: POST https://example.com/api/posts (새 글 추가).
        • 바디:
          {
            "title": "HTTP Basics",
            "content": "Learning HTTP is fun!"
          }
      • PUT: 데이터를 생성 또는 전체 업데이트.
        • 예: PUT https://example.com/api/posts/1 (1번 글 업데이트 또는 생성).
        • 바디:
          {
            "title": "Updated Title",
            "content": "This content has been updated."
          }
      • PATCH: 데이터를 일부 업데이트.
        • 예: PATCH https://example.com/api/posts/1 (1번 글 제목만 수정).
        • 바디:
          {
            "title": "Partially Updated Title"
          }
      • DELETE: 데이터를 삭제.
        • 예: DELETE https://example.com/api/posts/1 (1번 글 삭제).
  3. 헤더(Header)

    • 요청 메타데이터.
      예:
      Content-Type: application/json
      Authorization: Bearer <your-token>
      • Content-Type: 요청 데이터 형식 지정 (예: JSON).
      • Authorization: 인증 토큰 포함.
  4. 바디(Body)

    • 요청에 필요한 실제 데이터.
      • 예: 새 글 작성 요청 시 바디 데이터.
        {
          "title": "Understanding HTTP",
          "content": "HTTP is the backbone of the web."
        }

4. HTTP 응답(Response)의 구성 요소

  1. 상태 코드(Status Code)

    • 서버 응답 상태.
      예:
      • 200 OK: 요청 성공.
        • 예: 서버가 요청 데이터를 성공적으로 반환.
      • 201 Created: 데이터 생성 성공.
        • 예: 새 글 추가 요청에 대한 응답.
        {
          "id": 123,
          "title": "HTTP Basics",
          "content": "Learning HTTP is fun!"
        }
      • 404 Not Found: 리소스 없음.
        • 예: 존재하지 않는 글 ID 요청.
      • 500 Internal Server Error: 서버 내부 오류.
  2. 헤더(Header)

    • 응답 메타데이터.
      예:
      Content-Type: application/json
      Set-Cookie: session_id=abc123; HttpOnly
  3. 바디(Body)

    • 응답 데이터.
      • 예: 글 목록 조회 결과.
        [
          {
            "id": 1,
            "title": "HTTP Basics",
            "content": "Learning HTTP is fun!"
          },
          {
            "id": 2,
            "title": "Advanced HTTP",
            "content": "Deep dive into HTTP."
          }
        ]

5. HTTP 요청과 응답의 주요 특징

  • 같은 URL이라도 메서드에 따라 서버에서 다르게 처리.
    예:
    • GET https://example.com/api/posts: 글 목록 조회.
    • POST https://example.com/api/posts: 새 글 추가.
  • 헤더: 부가 정보 제공 (메타데이터).
  • 바디: 요청/응답의 핵심 데이터 전송.

6. 상태 코드 주요 예시

  • 2xx (성공):
    • 200 OK: 요청 성공.
    • 201 Created: 리소스 생성 성공.
  • 4xx (클라이언트 오류):
    • 400 Bad Request: 잘못된 요청.
    • 404 Not Found: 리소스 없음.
  • 5xx (서버 오류):
    • 500 Internal Server Error: 서버 내부 오류.

7. 실습 예고

  • 다음 강의에서 실제 HTTP 요청 및 응답 실습 예정.
    • : 인증 토큰을 사용한 글 작성 요청.
  • 이번 강의 내용을 복습하여 기초를 다질 것.
profile
코딩을 배우는 초보

0개의 댓글