Home > Network > 2024 > 🌐[Network] HTTP, API, URL, 쿼리, λ°”λ””

🌐[Network] HTTP, API, URL, 쿼리, λ°”λ””
Network

🌐[Network] HTTP, API, URL, 쿼리, λ°”λ””

1️⃣ HTTPλž€ λ¬΄μ—‡μΈκ°€μš”?

  • HTTP(Hypertext Transfer Protocol) λŠ” WWW(World Wide Web)μ—μ„œ 정보λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•œ 기본적인 ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.
  • μ›Ή λΈŒλΌμš°μ €μ™€ μ›Ή μ„œλ²„ κ°„μ˜ 톡신을 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” κ·œμ•½μœΌλ‘œ, ν΄λΌμ΄μ–ΈνŠΈ(Client, μ‚¬μš©μžμ˜ μ›Ή λΈŒλΌμš°μ €)κ°€ μ„œλ²„(Server)에 μš”μ²­(Request)을 보내고, μ„œλ²„κ°€ 이에 λŒ€ν•œ 응닡(Response)을 λ³΄λ‚΄λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.

1. HTTP의 μ£Όμš” νŠΉμ§•.

  • 1. ν…μŠ€νŠΈ 기반 ν”„λ‘œν† μ½œ.
    • HTTPλŠ” μ‚¬λžŒμ΄ 읽을 수 μžˆλŠ” ν…μŠ€νŠΈ ν˜•μ‹μœΌλ‘œ μš”μ²­κ³Ό 응닡을 μ£Όκ³ λ°›μŠ΅λ‹ˆλ‹€.
    • μš”μ²­ λ©”μ‹œμ§€μ—λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— μš”κ΅¬ν•˜λŠ” μž‘μ—…μ΄, 응닡 λ©”μ‹œμ§€μ—λŠ” μ„œλ²„κ°€ μš”μ²­μ— λŒ€ν•΄ μ²˜λ¦¬ν•œ κ²°κ³Όκ°€ ν¬ν•¨λ©λ‹ˆλ‹€.
  • 2. λΉ„μ—°κ²°μ„±.
    • HTTPλŠ” λΉ„μ—°κ²°μ„± ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.
    • 즉, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ 간에 μš”μ²­μ„ μ²˜λ¦¬ν•  λ•Œλ§Œ 연결을 λ§Ίκ³ , 응닡이 μ™„λ£Œλ˜λ©΄ 연결을 λŠμŠ΅λ‹ˆλ‹€.
    • 이후 μš”μ²­μ΄ μžˆμ„ λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ 연결을 λ§ΊμŠ΅λ‹ˆλ‹€.
    • 이λ₯Ό 톡해 μžμ› μ‚¬μš©μ„ 쀄일 수 μžˆμ§€λ§Œ, 지속적인 연결이 ν•„μš”ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” ν•œκ³„κ°€ μžˆμŠ΅λ‹ˆλ‹€.
  • 3. λ¬΄μƒνƒœμ„±.
    • HTTPλŠ” μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.
    • 즉, μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ 각각 λ…λ¦½μ μœΌλ‘œ μ²˜λ¦¬ν•˜λ©°, 이전 μš”μ²­μ˜ μƒνƒœλ‚˜ 정보λ₯Ό κΈ°μ–΅ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    • 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μΏ ν‚€(cookie), μ„Έμ…˜(session), JWT(Json Web Token)등을 μ‚¬μš©ν•˜μ—¬ μƒνƒœ 정보λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.
  • 4. 포트 번호.
    • HTTPλŠ” 기본적으둜 80번 포트 λ₯Ό μ‚¬μš©ν•˜λ©°, λ³΄μ•ˆμ΄ κ°•ν™”λœ HTTPSλŠ” 443번 포트 λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

2. HTTP의 λ™μž‘ 방식.

  • HTTPλŠ” ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ ꡬ쑰둜 λ™μž‘ν•˜λ©°, 주둜 μ›Ή λΈŒλΌμš°μ €κ°€ ν΄λΌμ΄μ–ΈνŠΈ 역할을 ν•˜κ³ , μ›Ή μ„œλ²„κ°€ μ„œλ²„ 역할을 ν•©λ‹ˆλ‹€.
  • 기본적인 μš”μ²­κ³Ό 응닡 과정은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
    • 1. ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­.
      • μ‚¬μš©μžκ°€ μ›Ή λΈŒλΌμš°μ €μ— http://example.comκ³Ό 같은 URL을 μž…λ ₯ν•˜λ©΄, ν΄λΌμ΄μ–ΈνŠΈ(μ›Ή λΈŒλΌμš°μ €)κ°€ μ„œλ²„μ— HTTP μš”μ²­μ„ λ³΄λƒ…λ‹ˆλ‹€.
      • 이 μš”μ²­μ€ μ›Ή νŽ˜μ΄μ§€λ‚˜ 이미지 파일과 같은 μžμ›μ„ μš”κ΅¬ν•˜λŠ” λ‚΄μš©μž…λ‹ˆλ‹€.
    • 2. μ„œλ²„ 응닡.
      • μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•œ ν›„, μš”μ²­ν•œ μžμ›(예: HTML λ¬Έμ„œ)을 HTTP μ‘λ‹΅μœΌλ‘œ λŒλ €μ€λ‹ˆλ‹€.
    • 3. μ›Ή νŽ˜μ΄μ§€ ν‘œμ‹œ.
      • ν΄λΌμ΄μ–ΈνŠΈλŠ” 받은 응닡을 ν•΄μ„ν•˜μ—¬ μ›Ή νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ν•˜κ±°λ‚˜ μžμ›μ„ ν‘œμ‹œν•©λ‹ˆλ‹€.

3. HTTP μš”μ²­ λ©”μ‹œμ§€ ꡬ쑰.

  • HTTP μš”μ²­ λ©”μ‹œμ§€λŠ” λ‹€μŒκ³Ό 같은 ꡬ쑰λ₯Ό κ°€μ§‘λ‹ˆλ‹€.
    • 1. μš”μ²­ 라인(Request Line)
      • λ©”μ„œλ“œ(Method) : ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— μš”μ²­ν•˜λŠ” μž‘μ—…μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
        • GET : μ„œλ²„λ‘œλΆ€ν„° 데이터λ₯Ό μš”μ²­.
        • POST : μ„œλ²„μ— 데이터λ₯Ό 전솑.
        • PUT : μ„œλ²„μ— 데이터λ₯Ό μ—…λ°μ΄νŠΈ.
        • DELETE : μ„œλ²„μ—μ„œ 데이터λ₯Ό μ‚­μ œ.
      • URL : μš”μ²­ν•˜λ €λŠ” μžμ›μ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
      • HTTP 버전 : μ‚¬μš© 쀑인 HTTP ν”„λ‘œν† μ½œμ˜ 버전 μ •λ³΄μž…λ‹ˆλ‹€.(예: HTTP/1.1)
        • 예: GET /index.html HTTP/1.1
    • 2. 헀더(Header)
      • μš”μ²­μ— λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
      • 예λ₯Ό λ“€μ–΄, User-Agent ν—€λ”λŠ” μš”μ²­μ„ λ³΄λ‚΄λŠ” ν΄λΌμ΄μ–ΈνŠΈ 정보λ₯Ό λ‹΄κ³  있으며, Accept ν—€λ”λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μˆ˜λ½ν•  수 μžˆλŠ” 데이터 ν˜•μ‹μ„ μ§€μ •ν•©λ‹ˆλ‹€.
    • 3. λ³Έλ¬Έ(Body)
      • POST λ‚˜ PUTκ³Ό 같은 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  λ•Œ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„λ‘œ 전솑할 데이터λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.
      • GET μš”μ²­μ—μ„œλŠ” 본문이 μ—†λŠ” κ²½μš°κ°€ λŒ€λΆ€λΆ„μž…λ‹ˆλ‹€.

4. HTTP 응닡 λ©”μ‹œμ§€ ꡬ쑰.

  • 1. μƒνƒœ 라인(Status Line)
    • HTTP 버전
      • μ„œλ²„κ°€ μ‚¬μš©ν•˜λŠ” HTTP λ²„μ „μž…λ‹ˆλ‹€.
    • μƒνƒœ μ½”λ“œ(Status Code)
      • μš”μ²­ 처리 κ²°κ³Όλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 숫자 μ½”λ“œμž…λ‹ˆλ‹€.
    • μƒνƒœ μ„€λͺ…(Status Text)
      • μƒνƒœ μ½”λ“œμ— λŒ€ν•œ μ„€λͺ…μž…λ‹ˆλ‹€.
    • 예: HTTP/1.1 200 OK
  • 2. 헀더(Header)
    • 응닡에 λŒ€ν•œ λΆ€κ°€ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
      • 예λ₯Ό λ“€μ–΄, Content-Type ν—€λ”λŠ” 응닡 본문의 데이터 ν˜•μ‹μ„ μ§€μ •ν•˜λ©°, Content-LengthλŠ” 응닡 λ°μ΄ν„°μ˜ 길이λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  • 3. λ³Έλ¬Έ(Body)
    • μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ³΄λ‚΄λŠ” μ‹€μ œ 데이터가 ν¬ν•¨λ©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, HTML λ¬Έμ„œ, 이미지, JSON 데이터 등이 본문에 λ‹΄κΈΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

5. HTTP μƒνƒœ μ½”λ“œ.

  • HTTP μ‘λ‹΅μ—μ„œ μƒνƒœ μ½”λ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 μš”μ²­μ˜ 처리 κ²°κ³Όλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ£Όμš” μƒνƒœ μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
    • 1xx (정보) : μš”μ²­μ΄ μˆ˜μ‹ λ˜μ–΄ 처리 μ€‘μž…μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
    • 2xx (성곡) : μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
      • 200 OK : μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆμŒ.
    • 3xx (λ¦¬λ‹€μ΄λ ‰μ…˜) : μš”μ²­ν•œ μžμ›μ΄ 영ꡬ적으둜 λ‹€λ₯Έ μœ„μΉ˜λ‘œ μ΄λ™ν–ˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
      • 301 Moved Permanently : μš”μ²­ν•œ μžμ›μ΄ 영ꡬ적으둜 λ‹€λ₯Έ μœ„μΉ˜λ‘œ 이동함.
      • 302 Found : μš”μ²­ν•œ μžμ›μ΄ μΌμ‹œμ μœΌλ‘œ λ‹€λ₯Έ μœ„μΉ˜λ‘œ 이동함.
    • 4xx(ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜) : ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— 였λ₯˜κ°€ μžˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
      • 400 Bad Request : 잘λͺ»λœ μš”μ²­.
      • 404 Not Found : μš”μ²­ν•œ μžμ›μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ.
    • 5xx(μ„œλ²„ 였λ₯˜) : μ„œλ²„μ—μ„œ μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” 쀑에 였λ₯˜κ°€ λ°œμƒν–ˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
      • 500 Internal Server Error : μ„œλ²„μ—μ„œ λ°œμƒν•œ 일반적인 였λ₯˜.
      • 503 Service Unavailable : μ„œλ²„κ°€ ν˜„μž¬ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μ—†μŒ.

6. HTTP의 ν•œκ³„μ™€ HTTPS

  • HTTPλŠ” 기본적으둜 μ•”ν˜Έν™”λ˜μ§€ μ•Šμ€ ν”„λ‘œν† μ½œ μž…λ‹ˆλ‹€.
  • λ”°λΌμ„œ, 데이터가 쀑간에 κ°€λ‘œμ±„κΈ°(μŠ€λ‹ˆν•‘) λ‹Ήν•  수 있으며, λ―Όκ°ν•œ 정보가 λ³΄ν˜Έλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ HTTPS(Hypertext Transfer Protocol Secure) κ°€ λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • HTTPSλŠ” HTTP에 SSL/TLS μ•”ν˜Έν™” 계측 을 μΆ”κ°€ν•˜μ—¬ 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ 주고받을 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.
  • 이λ₯Ό 톡해 μ›Ή μ‚¬μ΄νŠΈμ™€ μ‚¬μš©μž κ°„μ˜ 톡신이 λ³΄ν˜Έλ©λ‹ˆλ‹€.

7. μš”μ•½.

  • HTTPλŠ” μ›Ήμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ(주둜 μ›Ή λΈŒλΌμš°μ €)와 μ„œλ²„ 간에 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•œ ν”„λ‘œν† μ½œλ‘œ, μš”μ²­(Request)-응닡(Response) ꡬ쑰둜 λ™μž‘ν•˜λ©° ν…μŠ€νŠΈ 기반의 λ©”μ‹œμ§€λ₯Ό μ£Όκ³ λ°›μŠ΅λ‹ˆλ‹€.
  • λΉ„μ—°κ²°μ„±κ³Ό λ¬΄μƒνƒœμ„±μ„ 가지며, μƒνƒœ μ½”λ“œμ™€ 헀더λ₯Ό 톡해 μš”μ²­ 및 응닡에 λŒ€ν•œ 정보λ₯Ό μ œκ³΅ν•˜μ—¬ μ›Ή μƒμ—μ„œμ˜ 톡신을 μ§€μ›ν•©λ‹ˆλ‹€.
  • HTTPSλŠ” HTTP의 λ³΄μ•ˆ κ°•ν™”λ₯Ό μœ„ν•΄ λ„μž…λœ λ²„μ „μž…λ‹ˆλ‹€.

2️⃣ API(Application Programming Interface)

  • API(Application Programming Interface)λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨ 간에 μƒν˜Έμž‘μš©ν•  수 μžˆλ„λ‘ μ •μ˜λœ κ·œμΉ™κ³Ό λ„κ΅¬μ˜ λͺ¨μŒμž…λ‹ˆλ‹€.
  • 즉, APIλŠ” μ†Œν”„νŠΈμ›¨μ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ„œλ‘œ ν†΅μ‹ ν•˜κ³  데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • APIλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•œ ν”„λ‘œκ·Έλž¨μ΄ λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ˜ κΈ°λŠ₯을 ν™œμš©ν•˜κ±°λ‚˜ 데이터λ₯Ό κ°€μ Έμ˜¬ 수 있게 λ©λ‹ˆλ‹€.

1. API의 μ£Όμš” κ°œλ….

  • 1. μΈν„°νŽ˜μ΄μŠ€.
    • APIλŠ” 두 μ†Œν”„νŠΈμ›¨μ–΄ 간에 μ€‘κ°œ 역할을 ν•˜μ—¬, μ„œλ‘œ λ‹€λ₯Έ μ‹œμŠ€ν…œμ΄λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μΌμ •ν•œ κ·œμΉ™ 에 따라 데이터λ₯Ό κ΅ν™˜ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.
    • 이λ₯Ό 톡해 각 μ‹œμŠ€ν…œμ΄ μƒν˜Έμž‘μš©ν•˜λ©΄μ„œλ„ 독립성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 2. ν‘œμ€€ν™”λœ κ·œμΉ™.
    • APIλŠ” κ°œλ°œμžλ“€μ΄ νŠΉμ • κΈ°λŠ₯을 μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν‘œμ€€ν™”λœ 방식 으둜 μ œκ³΅λ©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, μ›Ή APIλŠ” HTTP μš”μ²­μ„ 톡해 데이터λ₯Ό μ „μ†‘ν•˜κ±°λ‚˜ λ°›λŠ” κ·œμΉ™μ„ λ”°λ¦…λ‹ˆλ‹€.
  • 3. 좔상화.
    • APIλŠ” λ‚΄λΆ€ κ΅¬ν˜„ 방식을 숨기고, μ™ΈλΆ€μ—μ„œλŠ” λ‹¨μˆœν•œ μΈν„°νŽ˜μ΄μŠ€λ§Œ μ œκ³΅ν•˜μ—¬ λ³΅μž‘ν•œ μž‘μ—…μ„ μ‰½κ²Œ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, Google Maps APIλ₯Ό μ‚¬μš©ν•˜λ©΄ λ³΅μž‘ν•œ 지도 데이터 처리 과정을 λͺ°λΌλ„ κ°„λ‹¨ν•œ λͺ…령을 톡해 지도 정보λ₯Ό ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. API의 μœ ν˜•.

  • 1. μ›Ή API
    • REST API(Representational State Transfer API)
      • 주둜 HTTP ν”„λ‘œν† μ½œμ„ 톡해 데이터λ₯Ό κ΅ν™˜ν•˜λŠ” μ›Ή APIμž…λ‹ˆλ‹€. RESTful APIλŠ” URL을 톡해 μžμ›(Resource)을 μ‹λ³„ν•˜κ³ , HTTP λ©”μ„œλ“œ(GET, POST, PUT, DELETE λ“±)λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€.
    • SOAP API(Simple Object Access Protocol)
      • XML 기반의 ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜μ—¬ 데이터 전솑을 μ²˜λ¦¬ν•˜λŠ” μ›Ή APIμž…λ‹ˆλ‹€.
      • REST API보닀 λ³΅μž‘ν•˜μ§€λ§Œ, 더 μ—„κ²©ν•œ ν‘œμ€€μ„ λ”°λ¦…λ‹ˆλ‹€.
  • 2. 라이브러리 API
    • κ°œλ°œμžκ°€ νŠΉμ • 라이브러리λ₯Ό μ‚¬μš©ν•  λ•Œ μ œκ³΅λ˜λŠ” ν•¨μˆ˜μ™€ λͺ…λ Ήμ–΄λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, Python의 math λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μˆ˜ν•™ κ΄€λ ¨ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” APIμž…λ‹ˆλ‹€.
  • 3. 운영 체제 API
    • 운영 μ²΄μ œκ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‚¬μš©ν•  수 μžˆλ„λ‘ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, Windows APIλŠ” 파일 μ‹œμŠ€ν…œ μ ‘κ·Ό, κ·Έλž˜ν”½ 처리, λ„€νŠΈμ›Œν¬ κΈ°λŠ₯ 등을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • 4. ν•˜λ“œμ›¨μ–΄ API
    • ν•˜λ“œμ›¨μ–΄ μž₯치(예: ν”„λ¦°ν„°, κ·Έλž˜ν”½ μΉ΄λ“œ)와 μ†Œν”„νŠΈμ›¨μ–΄ κ°„μ˜ μƒν˜Έμž‘μš©μ„ μœ„ν•œ APIμž…λ‹ˆλ‹€.
    • 이λ₯Ό 톡해 μ†Œν”„νŠΈμ›¨μ–΄λŠ” ν•˜λ“œμ›¨μ–΄μ˜ κΈ°λŠ₯을 직접 μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3. API의 ꡬ성 μš”μ†Œ.

  • 1. μš”μ²­(Request)
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 데이터λ₯Ό μš”μ²­ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€.
    • 일반적으둜 μ›Ή APIμ—μ„œλŠ” HTTP μš”μ²­μ„ μ‚¬μš©ν•˜λ©°, μš”μ²­μ—λŠ” λ‹€μŒμ΄ ν¬ν•¨λ©λ‹ˆλ‹€.
      • URL : μžμ›μ˜ μœ„μΉ˜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
      • HTTP λ©”μ„œλ“œ : ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— μˆ˜ν–‰ν•˜κ³ μž ν•˜λŠ” μž‘μ—…μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
        • GET : 데이터λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.
        • POST : μƒˆλ‘œμš΄ 데이터λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
        • PUT : κΈ°μ‘΄ 데이터λ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€.
        • DELETE : 데이터λ₯Ό μ‚­μ œν•©λ‹ˆλ‹€.
      • 헀더(Header) : μš”μ²­μ— λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό λ‹΄κ³  있으며, 인증 μ •λ³΄λ‚˜ 데이터 ν˜•μ‹μ„ μ •μ˜ν•©λ‹ˆλ‹€.
      • λ³Έλ¬Έ(Body) : 주둜 POST λ‚˜ PUT μš”μ²­μ—μ„œ μ„œλ²„λ‘œ 전솑할 데이터λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.
  • 2. 응닡(Response)
    • μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— λŒ€ν•΄ λ°˜ν™˜ν•˜λŠ” μ •λ³΄μž…λ‹ˆλ‹€.
    • μ‘λ‹΅μ—λŠ” λ‹€μŒμ΄ ν¬ν•¨λ©λ‹ˆλ‹€.
      • μƒνƒœ μ½”λ“œ : μš”μ²­μ΄ μ„±κ³΅ν–ˆλŠ”μ§€, 였λ₯˜κ°€ λ°œμƒν–ˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ½”λ“œμž…λ‹ˆλ‹€.
        • 200 OK : μš”μ²­ 성곡.
        • 404 Not Found : μš”μ²­ν•œ μžμ›μ„ 찾을 수 μ—†μŒ.
        • 500 Internal Server Error : μ„œλ²„ λ‚΄λΆ€ 였λ₯˜.
  • 3. λ³Έλ¬Έ(Body)
    • μ„œλ²„κ°€ λ°˜ν™˜ν•˜λŠ” μ‹€μ œ λ°μ΄ν„°λ‘œ, 보톡 JSON, XML, HTML ν˜•μ‹μœΌλ‘œ μ œκ³΅λ©λ‹ˆλ‹€.

4. API의 μ˜ˆμ‹œ.

  • 1. μ›Ή API μ˜ˆμ‹œ.
    • Google Maps API
      • κ°œλ°œμžλŠ” Google Maps APIλ₯Ό μ‚¬μš©ν•˜μ—¬ μ›Ή μ‚¬μ΄νŠΈλ‚˜ 앱에 지도λ₯Ό μ‚½μž…ν•˜κ³ , μœ„μΉ˜ 기반 데이터λ₯Ό 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.
      • μ‚¬μš©μžλŠ” 지도 데이터λ₯Ό 직접 κ΄€λ¦¬ν•˜μ§€ μ•Šμ•„λ„ Google의 μ„œλ²„μ—μ„œ μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€λ₯Ό ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • Twitter API
      • Twitter APIλŠ” νŠΈμœ„ν„° 데이터(νŠΈμœ—, μ‚¬μš©μž 정보 λ“±)에 μ ‘κ·Όν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
      • 이λ₯Ό 톡해 κ°œλ°œμžλŠ” νŠΈμœ„ν„°μ™€ κ΄€λ ¨λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ 뢄석 도ꡬλ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 라이브러리 API μ˜ˆμ‹œ
      • Java Standard Library
        • Java ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 기본적으둜 μ œκ³΅ν•˜λŠ” ν•¨μˆ˜ 및 λ©”μ„œλ“œ λͺ¨μŒμž…λ‹ˆλ‹€.
        • 예λ₯Ό λ“€μ–΄, java.util.List APIλ₯Ό 톡해 리슀트 κ΄€λ ¨ κΈ°λŠ₯을 μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

5. API의 μž₯점.

  • 1. μž¬μ‚¬μš©μ„±.
    • APIλ₯Ό μ‚¬μš©ν•˜λ©΄ κΈ°μ‘΄ μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯을 μž¬μ‚¬μš©ν•  수 μžˆμ–΄, λ™μΌν•œ κΈ°λŠ₯을 μ²˜μŒλΆ€ν„° κ°œλ°œν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€.
    • 이λ₯Ό 톡해 개발 νš¨μœ¨μ„±μ΄ λ†’μ•„μ§‘λ‹ˆλ‹€.
  • 2. ν™•μž₯μ„±.
    • APIλŠ” μ„œλ‘œ λ‹€λ₯Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μƒν˜Έμž‘μš©ν•  수 μžˆλ„λ‘ ν•˜μ—¬, ν™•μž₯μ„±κ³Ό μœ μ—°μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, λ‹€μ–‘ν•œ 앱이 Facebook APIλ₯Ό μ‚¬μš©ν•΄ μ†Œμ…œ κΈ°λŠ₯을 톡합할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 3. μœ μ§€λ³΄μˆ˜.
    • APIλŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” μΈ‘(μ„œλ²„, μ„œλΉ„μŠ€ 제곡자)κ³Ό 이λ₯Ό μ‚¬μš©ν•˜λŠ” μΈ‘(ν΄λΌμ΄μ–ΈνŠΈ)이 λ…λ¦½μ μœΌλ‘œ μœ μ§€λ³΄μˆ˜ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.
    • 즉, API의 κ΅¬ν˜„ μ„ΈλΆ€ 사항이 λ³€κ²½λ˜λ”λΌλ„ ν΄λΌμ΄μ–ΈνŠΈλŠ” λ™μΌν•œ λ°©μ‹μœΌλ‘œ APIλ₯Ό ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 4. λ³΄μ•ˆ.
    • APIλŠ” λ°μ΄ν„°λ‚˜ μ„œλΉ„μŠ€μ— λŒ€ν•œ 접근을 μ œν•œν•  수 μžˆλŠ” λ³΄μ•ˆ λ©”μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
    • API ν‚€, OAuth λ“±μ˜ 인증 방식이 이λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

6. API의 λ³΄μ•ˆ.

  • APIλŠ” λ³΄μ•ˆ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 인증(Authentication) 및 κΆŒν•œ λΆ€μ—¬(Authorization)λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.
  • μ£Όμš” λ³΄μ•ˆ 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
    • API ν‚€
      • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— μš”μ²­ν•  λ•Œ μ‚¬μš©ν•˜λŠ” 고유 ν‚€λ‘œ, API μš”μ²­μ΄ μ˜¬λ°”λ₯Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ™”λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
    • OAuth
      • μ‚¬μš©μž 인증을 μœ„ν•œ ν”„λ‘œν† μ½œλ‘œ, μ‚¬μš©μžκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μžμ‹ μ˜ μžμ›μ— μ ‘κ·Όν•  수 μžˆλ„λ‘ μŠΉμΈν•˜λŠ” μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
    • HTTPS
      • API 톡신 μ‹œ μ•”ν˜Έν™”λ₯Ό μ μš©ν•˜μ—¬ 데이터가 μ•ˆμ „ν•˜κ²Œ μ „μ†‘λ˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.

7. μš”μ•½.

  • APIλŠ” μ†Œν”„νŠΈμ›¨μ–΄ κ°„μ˜ μƒν˜Έμž‘μš©μ„ μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€λ‘œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ„œλ‘œ 데이터λ₯Ό μ£Όκ³ λ°›κ³  κΈ°λŠ₯을 μ‚¬μš©ν•  수 있게 ν•©λ‹ˆλ‹€.
  • μ›Ή, 라이브러리, 운영 체제 λ“± λ‹€μ–‘ν•œ APIκ°€ 있으며, κ°œλ°œμžκ°€ λ³΅μž‘ν•œ κΈ°λŠ₯을 λ‹¨μˆœν™”ν•˜κ³  μ‹œμŠ€ν…œ κ°„μ˜ 톡합을 μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.
  • APIλŠ” μž¬μ‚¬μš©μ„±, ν™•μž₯μ„±, λ³΄μ•ˆμ„± μΈ‘λ©΄μ—μ„œ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

3️⃣ URL(Uniform Resource Locator)

  • URL(Uniform Resource Locator) 은 인터넷 μƒμ—μ„œ νŠΉμ • μžμ›μ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ£Όμ†Œμž…λ‹ˆλ‹€.
  • μ›Ή λΈŒλΌμš°μ €λŠ” URL을 μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžκ°€ μš”μ²­ν•œ μ›Ή νŽ˜μ΄μ§€λ‚˜ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•©λ‹ˆλ‹€.
  • μ‰½κ²Œ 말해, URL은 인터넷 μƒμ—μ„œ μžμ›μ΄ 어디에 μœ„μΉ˜ν•΄ μžˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” β€œμ›Ή μ£Όμ†Œβ€ μž…λ‹ˆλ‹€.

1. URL의 ꡬ성 μš”μ†Œ.

  • URL은 μ—¬λŸ¬ ꡬ성 μš”μ†Œλ‘œ 이루어져 있으며, 각각의 뢀뢄은 μžμ›μ— μ ‘κ·Όν•˜κΈ° μœ„ν•œ μ€‘μš”ν•œ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • 일반적인 URL ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
ν”„λ‘œν† μ½œ://μ‚¬μš©μž 정보@호슀트:포트/경둜?쿼리#ν”„λž˜κ·Έλ¨ΌνŠΈ
  • 1. ν”„λ‘œν† μ½œ(Scheme)
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ μžμ›μ— μ ‘κ·Όν•  λ•Œ μ‚¬μš©ν•  톡신 방식을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
    • 예: http, https, ftp λ“±
    • 예: https://www.example.comμ—μ„œ httpsλŠ” HTTPS ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄ 데이터λ₯Ό μ£Όκ³ λ°›λŠ”λ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.
  • 2. 호슀트(Host)
    • μžμ›μ΄ μœ„μΉ˜ν•œ μ„œλ²„μ˜ 도메인 이름 λ˜λŠ” IP μ£Όμ†Œμž…λ‹ˆλ‹€.
    • 예: www.example.com, 198.168.1.1
    • 예: https://www.example.comμ—μ„œ www.example.com은 μ„œλ²„μ˜ 도메인 μ΄λ¦„μž…λ‹ˆλ‹€.
  • 3. 포트 번호(Port) (선택 사항)
    • μ„œλ²„μ—μ„œ μ‚¬μš©ν•  νŠΉμ • λ„€νŠΈμ›Œν¬ 포트λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
    • 기본적으둜 HTTPλŠ” 포트 80, HTTPSλŠ” 포트 443을 μ‚¬μš©ν•©λ‹ˆλ‹€.
    • 포트λ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄ κΈ°λ³Έ ν¬νŠΈκ°€ μ‚¬μš©λ©λ‹ˆλ‹€.
    • 예: https://www.example.com:8080μ—μ„œ 8080은 포트 λ²ˆν˜Έμž…λ‹ˆλ‹€.
  • 4. 경둜(Path)
    • μ„œλ²„ λ‚΄μ—μ„œ νŠΉμ • μžμ›μ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
    • 파일 μ‹œμŠ€ν…œ κ²½λ‘œμ™€ μœ μ‚¬ν•˜κ²Œ μžμ›(μ›Ή νŽ˜μ΄μ§€, 이미지, 파일 λ“±)의 경둜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
    • 예: https://www.example.com/about μ—μ„œ /about은 example.com μ„œλ²„ λ‚΄μ˜ about νŽ˜μ΄μ§€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  • 5. 쿼리 λ¬Έμžμ—΄(Query String)(선택 사항)
    • 좔가적인 λ§€κ°œλ³€μˆ˜(parameters)λ₯Ό μ„œλ²„μ— μ „λ‹¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.
    • 주둜 URL 끝에 ? 뒀에 μœ„μΉ˜ν•˜λ©°, μ—¬λŸ¬ 개의 λ§€κ°œλ³€μˆ˜λŠ” &둜 κ΅¬λΆ„λ©λ‹ˆλ‹€.
    • 예: https://www.example.com/search?q=example&lang=enμ—μ„œ q=exampleκ³Ό lang=en은 검색어와 μ–Έμ–΄λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 쿼리 λ§€κ°œλ³€μˆ˜μž…λ‹ˆλ‹€.
  • 6. ν”„λž˜κ·Έλ¨ΌνŠΈ(Fragment)(선택 사항)
    • νŽ˜μ΄μ§€ λ‚΄ νŠΉμ • μœ„μΉ˜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
    • # 기호 뒀에 μœ„μΉ˜ν•˜λ©°, λΈŒλΌμš°μ €κ°€ ν•΄λ‹Ή μœ„μΉ˜λ‘œ μŠ€ν¬λ‘€ν•˜λ„λ‘ μ§€μ‹œν•©λ‹ˆλ‹€.
    • 예: https://www.example.com/docs#section2 μ—μ„œ #section2λŠ” νŽ˜μ΄μ§€ λ‚΄ νŠΉμ • μ„Ήμ…˜μœΌλ‘œ μ΄λ™ν•˜κΈ° μœ„ν•œ ν”„λž˜κ·Έλ¨ΌνŠΈμž…λ‹ˆλ‹€.

2. URL μ˜ˆμ‹œ.

  • λ‹€μŒμ€ URL의 μ‹€μ œ μ˜ˆμ‹œμž…λ‹ˆλ‹€.
https://www.example.com:8080/docs/tutorial.html?name=test#section1
  • 이 URL을 λΆ„μ„ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
    • ν”„λ‘œν† μ½œ : https(λ³΄μ•ˆλœ HTTP μ—°κ²°)
    • 호슀트 : www.example.com (μ„œλ²„μ˜ 도메인 이름)
    • 포트 : 8080 (μ„œλ²„κ°€ μ‚¬μš©ν•˜λŠ” 포트 번호)
    • 경둜 : /docs/tutorial.html (μ„œλ²„ λ‚΄ μžμ›μ˜ 경둜)
    • 쿼리 λ¬Έμžμ—΄ : ?name=test (μΆ”κ°€ λ§€κ°œλ³€μˆ˜ name이 testλΌλŠ” 값을 가짐)
    • ν”„λž˜κ·Έλ¨ΌνŠΈ : #section1 (λ¬Έμ„œ λ‚΄ νŠΉμ • μƒ‰μ…˜μœΌλ‘œ 이동)

3. URL의 μ—­ν• .

  • 1. μ›Ή μžμ› 식별
    • URL은 μ „ μ„Έκ³„μ μœΌλ‘œ κ³ μœ ν•œ μžμ›μ„ μ‹λ³„ν•˜μ—¬, μ‚¬μš©μžκ°€ μ›ν•˜λŠ” μ›Ή νŽ˜μ΄μ§€λ‚˜ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  수 있게 ν•΄μ€λ‹ˆλ‹€.
    • μ΄λŠ” ν…μŠ€νŠΈ λ¬Έμ„œ, 이미지, λ™μ˜μƒ, API μ—”λ“œν¬μΈνŠΈ λ“± λ‹€μ–‘ν•œ ν˜•νƒœμ˜ μžμ›μΌ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 2. 데이터 전솑
    • URL은 데이터λ₯Ό μ„œλ²„λ‘œ μ „μ†‘ν•˜λŠ” 데에도 μ‚¬μš©λ©λ‹ˆλ‹€.
    • 특히 쿼리 λ¬Έμžμ—΄μ„ 톡해 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‚¬μš©μž μž…λ ₯ 데이터λ₯Ό μ„œλ²„λ‘œ 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, 검색 μ—”μ§„μ—μ„œ 검색어λ₯Ό μž…λ ₯ν•˜λ©΄ URL에 쿼리 λ¬Έμžμ—΄λ‘œ μ„œλ²„μ— μ „μ†‘λ©λ‹ˆλ‹€.
  • 3. λ„€νŠΈμ›Œν¬ λ¦¬μ†ŒμŠ€ μ—°κ²°
    • URL은 λ‹¨μˆœν•œ μ›Ή νŽ˜μ΄μ§€λΏλ§Œ μ•„λ‹ˆλΌ, FTP μ„œλ²„, 메일 μ„œλ²„, λ°μ΄ν„°λ² μ΄μŠ€ λ“±μ˜ λ„€νŠΈμ›Œν¬ μžμ›κ³Όλ„ 연결될 수 μžˆμŠ΅λ‹ˆλ‹€.

4. URL과 URI의 차이.

  • URI(Uniform Resource Identifier) λŠ” URL을 ν¬ν•¨ν•˜λŠ” 더 넓은 κ°œλ…μœΌλ‘œ, μžμ›μ„ 식별할 수 μžˆλŠ” λ¬Έμžμ—΄μ„ λ§ν•©λ‹ˆλ‹€.
  • URIλŠ” 두 κ°€μ§€λ‘œ κ΅¬λΆ„λ©λ‹ˆλ‹€.
    • URL : μžμ›μ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ‹λ³„μž.
    • URN(Uniform Resource Name) : μžμ›μ˜ μ΄λ¦„λ§Œμ„ λ‚˜νƒ€λ‚΄λŠ” μ‹λ³„μž.
      • 예: ISBN 번호(urn:isbn:041450523)
  • URL은 μžμ›μ˜ μœ„μΉ˜(μ£Όμ†Œ)λ₯Ό λ‚˜νƒ€λ‚΄λŠ” URI의 ν•œ ν˜•νƒœμž…λ‹ˆλ‹€.

5. URL의 μ€‘μš”μ„±.

  • 1. μ›Ή 탐색.
    • μ›Ή λΈŒλΌμš°μ €μ—μ„œ URL을 μž…λ ₯ν•¨μœΌλ‘œμ¨ μ›ν•˜λŠ” μ›Ή νŽ˜μ΄μ§€μ— 직접 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ˜ν•œ ν•˜μ΄νΌλ§ν¬λ‘œ URL을 μ—°κ²°ν•΄ μ‚¬μš©μžλŠ” μ‰½κ²Œ μ›Ή νŽ˜μ΄μ§€ 간을 이동할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 2. API 호좜.
    • URL은 μ›Ή API 호좜 μ‹œ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.
    • APIλŠ” URL을 톡해 νŠΉμ • μžμ›μ— μ ‘κ·Όν•˜κ³ , 데이터λ₯Ό μ£Όκ³ λ°›λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.
    • RESTful APIμ—μ„œλŠ” URL이 μžμ›μ„ μ‹λ³„ν•˜κ³  μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ€‘μš”ν•œ μš”μ†Œμž…λ‹ˆλ‹€.
  • 3. 검색 엔진 μ΅œμ ν™”(SEO).
    • URL κ΅¬μ‘°λŠ” 검색 μ—”μ§„μ—μ„œ μ›Ή νŽ˜μ΄μ§€λ₯Ό ν¬λ‘€λ§ν•˜κ³  μΈλ±μ‹±ν•˜λŠ” 데 μ€‘μš”ν•œ μš”μ†Œμž…λ‹ˆλ‹€.
    • 잘 κ΅¬μ„±λœ URL은 검색 엔진이 νŽ˜μ΄μ§€ λ‚΄μš©μ„ μ΄ν•΄ν•˜λŠ” 데 도움을 μ€λ‹ˆλ‹€.

6. μš”μ•½.

  • URL은 μΈν„°λ„·μ—μ„œ μžμ›μ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ£Όμ†Œλ‘œ, ν”„λ‘œν† μ½œ, 도메인 이름, 경둜, 쿼리 λ¬Έμžμ—΄, ν”„λž˜κ·Έλ¨ΌνŠΈ λ“± μ—¬λŸ¬ μš”μ†Œλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.
  • URL을 톡해 μ‚¬μš©μžλŠ” μ›Ή μžμ›μ— μ ‘κ·Όν•˜κ³  데이터λ₯Ό 주고받을 수 있으며, μ΄λŠ” μ›Ή λΈŒλΌμš°μ§•, API 호좜, 데이터 전솑 등에 핡심적인 역할을 ν•©λ‹ˆλ‹€.

4️⃣ 쿼리(Query)

  • 쿼리(Query) λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 데이터λ₯Ό 전달할 λ–„ URL의 일뢀 둜 ν¬ν•¨λ˜μ–΄ μ„œλ²„λ‘œ μ „μ†‘λ˜λŠ” 데이터λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
  • 주둜 GET μš”μ²­μ— μ‚¬μš©λ˜λ©°, URL 끝에 ? 기호λ₯Ό μ‚¬μš©ν•˜μ—¬ 쿼리 λ¬Έμžμ—΄μ„ μ‹œμž‘ν•˜κ³ , ν•˜λ‚˜ μ΄μƒμ˜ λ§€κ°œλ³€μˆ˜(νŒŒλΌλ―Έν„°)λ₯Ό & 기호둜 κ΅¬λΆ„ν•˜μ—¬ μ„œλ²„μ— μ „λ‹¬ν•©λ‹ˆλ‹€.

1. 쿼리의 μ£Όμš” κ°œλ….

  • 1. GET μš”μ²­μ—μ„œμ˜ 쿼리 μ‚¬μš©.
    • GET μš”μ²­μ€ μ„œλ²„μ— 데이터λ₯Ό 전달할 λ•Œ URL에 쿼리 λ¬Έμžμ—΄μ„ ν¬ν•¨ν•˜μ—¬ μ „μ†‘ν•©λ‹ˆλ‹€.
    • μΏΌλ¦¬λŠ” URL의 경둜 뒀에 λΆ™μœΌλ©°, ? 둜 μ‹œμž‘ν•œ ν›„ λ§€κ°œλ³€μˆ˜(key-value)λ₯Ό =둜 μ—°κ²°ν•©λ‹ˆλ‹€.
    • μ—¬λŸ¬ λ§€κ°œλ³€μˆ˜κ°€ μžˆμ„ 경우 &둜 κ΅¬λΆ„ν•©λ‹ˆλ‹€.
    • μΏΌλ¦¬λŠ” 주둜 검색 쑰건, 필터링 정보, νŽ˜μ΄μ§€ 번호, μ •λ ¬ μˆœμ„œ λ“± 을 μ„œλ²„μ— 전달할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
https://www.example.com/search?q=shoes&color=red&size=10
  • 예λ₯Ό λ“€μ–΄, μœ„μ™€ 같은 URL을 μ‚΄νŽ΄λ΄…μ‹œλ‹€.
    • q=shoes : qλΌλŠ” λ§€κ°œλ³€μˆ˜μ— shoesλΌλŠ” 검색어λ₯Ό μ „λ‹¬ν•©λ‹ˆλ‹€.
    • color=red : color λΌλŠ” λ§€κ°œλ³€μˆ˜μ— red λΌλŠ” 값을 μ „λ‹¬ν•©λ‹ˆλ‹€.
    • size=10 : size λΌλŠ” λ§€κ°œλ³€μˆ˜μ— 10 μ΄λΌλŠ” 값을 μ „λ‹¬ν•©λ‹ˆλ‹€.
  • 2. 쿼리의 ꡬ쑰.
    • ?둜 μ‹œμž‘ν•˜μ—¬ 쿼리 λ¬Έμžμ—΄μ΄ μ‹œμž‘λ©λ‹ˆλ‹€.
    • key=value ν˜•νƒœλ‘œ λ§€κ°œλ³€μˆ˜μ™€ κ·Έ 값을 ν‘œν˜„ν•©λ‹ˆλ‹€.
    • μ—¬λŸ¬ 개의 λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•  경우 &둜 κ΅¬λΆ„ν•©λ‹ˆλ‹€.
    • 기본적인 쿼리 ν˜•μ‹μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.
https://www.example.com/resource?key1=value1&key2=value2&key3=value3
  • 3. μ„œλ²„μ—μ„œμ˜ 처리.
    • μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ „λ‹¬ν•œ 쿼리 λ¬Έμžμ—΄μ„ νŒŒμ‹±ν•˜μ—¬ 각각의 λ§€κ°œλ³€μˆ˜ 값을 μΆ”μΆœν•©λ‹ˆλ‹€.
    • μΆ”μΆœλœ 값듀은 μ„œλ²„μ—μ„œ μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, 예λ₯Ό λ“€μ–΄ 검색어, 필터링 μ˜΅μ…˜, νŽ˜μ΄μ§€ 번호 등을 기반으둜 ν΄λΌμ΄μ–ΈνŠΈκ°€ μ›ν•˜λŠ” κ²°κ³Όλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • 4. λ°μ΄ν„°μ˜ μ œν•œ.
    • GET μš”μ²­μ€ λ°μ΄ν„°μ˜ 크기 μ œν•œμ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • λΈŒλΌμš°μ €λ‚˜ μ„œλ²„λŠ” 보톡 μ•½ 2048자 μ •λ„μ˜ URL 길이λ₯Ό ν—ˆμš©ν•˜λ―€λ‘œ, 쿼리둜 전솑할 수 μžˆλŠ” λ°μ΄ν„°λŠ” μƒλŒ€μ μœΌλ‘œ μ μŠ΅λ‹ˆλ‹€.
    • λ―Όκ°ν•œ 데이터(λΉ„λ°€λ²ˆν˜Έ, κ°œμΈμ •λ³΄ λ“±)λŠ” 쿼리 λ¬Έμžμ—΄λ‘œ μ „μ†‘ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
    • μΏΌλ¦¬λŠ” URL에 λ…ΈμΆœλ˜λ©°, λΈŒλΌμš°μ € κΈ°λ‘μ΄λ‚˜ μ„œλ²„ λ‘œκ·Έμ— μ €μž₯될 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.
    • μ΄λŸ¬ν•œ 데이터λ₯Ό μ „μ†‘ν•˜λ €λ©΄ POST μš”μ²­μ„ μ‚¬μš©ν•˜λŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€.

2. 쿼리의 μ‚¬μš© μ˜ˆμ‹œ.

  • μ˜ˆμ‹œ 1: 검색.
https://www.example.com/search?query=laptop&category=electronics&sort=price
  • 이 μΏΌλ¦¬λŠ” β€œlaptopβ€μ΄λΌλŠ” κ²€μƒ‰μ–΄λ‘œ μ „μž μ œν’ˆ μΉ΄ν…Œκ³ λ¦¬ λ‚΄μ—μ„œ κ°€κ²©μˆœμœΌλ‘œ μ •λ ¬λœ κ²°κ³Όλ₯Ό μš”μ²­ν•˜λŠ” μ˜ˆμž…λ‹ˆλ‹€.
    • query : laptop(검색 ν‚€μ›Œλ“œ)
    • category : electronics(μΉ΄ν…Œκ³ λ¦¬)
    • sort : price(κ°€κ²©μˆœ μ •λ ¬)
  • μ˜ˆμ‹œ 2: 필터링 및 νŽ˜μ΄μ§•.
https://www.example.com/products?category=shoes&brand=nike&size=9&page=2
  • μ—¬κΈ°μ„œλŠ” μ‹ λ°œ μΉ΄ν…Œκ³ λ¦¬μ—μ„œ Nike λΈŒλžœλ“œμ˜ μ‚¬μ΄μ¦ˆ 9인 μ œν’ˆμ„ 두 번째 νŽ˜μ΄μ§€μ—μ„œ μš”μ²­ν•˜λŠ” μƒν™©μž…λ‹ˆλ‹€.
    • category : shoes(μ œν’ˆ μΉ΄ν…Œκ³ λ¦¬)
    • brand : nike (λΈŒλžœλ“œ ν•„ν„°)
    • size : 9 (μ‚¬μ΄μ¦ˆ ν•„ν„°)
    • page : 2 (νŽ˜μ΄μ§€ 번호)

3. 쿼리의 μž₯점.

  • URL을 톡해 κ°„νŽΈν•˜κ²Œ 데이터 전솑.
    • 쿼리 λ¬Έμžμ—΄μ„ 톡해 ν΄λΌμ΄μ–ΈνŠΈλŠ” μ‰½κ²Œ μ„œλ²„μ— 데이터λ₯Ό 전달할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 직접 링크둜 곡유 κ°€λŠ₯.
    • 쿼리 λ¬Έμžμ—΄μ„ ν¬ν•¨ν•œ URL은 λ°”λ‘œ κ³΅μœ ν•  수 있으며, μ‚¬μš©μžκ°€ λ™μΌν•œ URL을 톡해 λ™μΌν•œ μš”μ²­μ„ μž¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
      • 예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ 필터링 μ˜΅μ…˜μ΄ 적용된 검색 κ²°κ³Ό νŽ˜μ΄μ§€μ˜ URL을 λ‹€λ₯Έ μ‚¬μš©μžμ™€ κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 검색 엔진 μ΅œμ ν™”(SEO).
    • 검색 엔진이 쿼리λ₯Ό 톡해 νŠΉμ •ν•œ νŽ˜μ΄μ§€ λ‚΄μš©μ„ μ΄ν•΄ν•˜κ³  색인할 수 μžˆμŠ΅λ‹ˆλ‹€.

4. 쿼리와 POST μš”μ²­μ˜ 차이점.

  • GET μš”μ²­ μ—μ„œμ˜ 쿼리 λ¬Έμžμ—΄μ€ URL에 λ…ΈμΆœλ˜λ©°, λΈŒλΌμš°μ € νžˆμŠ€ν† λ¦¬λ‚˜ μ„œλ²„ λ‘œκ·Έμ— μ €μž₯될 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 이 λ•Œλ¬Έμ— λ―Όκ°ν•œ 정보λ₯Ό 전솑할 λ•ŒλŠ” μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • POST μš”μ²­ μ—μ„œλŠ” 데이터λ₯Ό λ³Έλ¬Έ(body)에 λ‹΄μ•„ μ „μ†‘ν•˜λ―€λ‘œ, URL에 λ…ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 큰 μ–‘μ˜ 데이터λ₯Ό μ „μ†‘ν•˜κ±°λ‚˜ λ³΄μ•ˆμ΄ μ€‘μš”ν•œ 정보λ₯Ό 전솑할 λ•ŒλŠ” POST μš”μ²­μ„ μ‚¬μš©ν•˜λŠ” 것이 더 μ•ˆμ „ν•©λ‹ˆλ‹€.

5. μš”μ•½.

  • μΏΌλ¦¬λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 데이터λ₯Ό 전달할 λ•Œ GET μš”μ²­μ˜ URL에 λ§€κ°œλ³€μˆ˜λ‘œ ν¬ν•¨λ˜μ–΄ μ „μ†‘λ˜λŠ” 데이터λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
  • 쿼리 λ¬Έμžμ—΄μ€ key=value ν˜•νƒœλ‘œ μ „λ‹¬λ˜λ©°, μ—¬λŸ¬ λ§€κ°œλ³€μˆ˜λŠ” &둜 κ΅¬λΆ„λ©λ‹ˆλ‹€.
  • 검색어, ν•„ν„° 쑰건, νŽ˜μ΄μ§€ 번호 등을 μ„œλ²„λ‘œ 전솑할 λ•Œ 주둜 μ‚¬μš©λ˜λ©° URL에 λ…ΈμΆœλ˜λŠ” 만큼 λ―Όκ°ν•œ 정보 μ „μ†‘μ—λŠ” μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

5️⃣ λ°”λ””(Body)

  • λ°”λ””(Body) λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„λ‘œ POST, PUT, PATCH 와 같은 HTTP μš”μ²­μ„ 보낼 λ•Œ, 데이터λ₯Ό λ‹΄μ•„ μ„œλ²„λ‘œ μ „μ†‘ν•˜λŠ” λΆ€λΆ„ μž…λ‹ˆλ‹€.
  • 특히, 큰 μ–‘μ˜ λ°μ΄ν„°λ‚˜ λ³΄μ•ˆμ΄ μ€‘μš”ν•œ 데이터λ₯Ό 전솑할 λ•Œ λ°”λ””λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • λ°”λ””λŠ” URL에 λ…ΈμΆœλ˜μ§€ μ•Šκ³  μš”μ²­ λ©”μ‹œμ§€μ˜ 본문에 ν¬ν•¨λ˜λ―€λ‘œ, 데이터 전솑에 μžˆμ–΄ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

1. λ°”λ””λ₯Ό μ‚¬μš©ν•˜λŠ” μ£Όμš” HTTP λ©”μ„œλ“œ.

  • 1. POST
    • μ„œλ²„μ— μƒˆλ‘œμš΄ 데이터λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ μš”μ²­μ„ 보낼 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
    • μš”μ²­ 바디에 전솑할 데이터λ₯Ό ν¬ν•¨ν•˜μ—¬ μ„œλ²„λ‘œ λ³΄λƒ…λ‹ˆλ‹€.
    • 예: μ‚¬μš©μž 등둝, 파일 μ—…λ‘œλ“œ λ“±.
  • 2. PUT
    • μ„œλ²„μ— κΈ°μ‘΄ 데이터λ₯Ό μˆ˜μ •ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
    • μš”μ²­ 바디에 μˆ˜μ •ν•  데이터λ₯Ό ν¬ν•¨ν•˜μ—¬ μ„œλ²„λ‘œ λ³΄λƒ…λ‹ˆλ‹€.
    • 예: κΈ°μ‘΄ μ‚¬μš©μžμ˜ 정보 μ—…λ°μ΄νŠΈ.
  • 3. PATCH
    • μ„œλ²„μ˜ 일뢀 데이터λ₯Ό μˆ˜μ •ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
    • 전체 데이터가 μ•„λ‹Œ, μˆ˜μ •ν•  λΆ€λΆ„λ§Œμ„ 바디에 ν¬ν•¨ν•˜μ—¬ λ³΄λƒ…λ‹ˆλ‹€.
  • 4. DELETE
    • 일뢀 κ²½μš°μ—λŠ” μ„œλ²„μ— μ‚­μ œν•  μžμ›μ— λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό 바디에 λ‹΄μ•„ 보낼 수 μžˆμŠ΅λ‹ˆλ‹€.
    • ν•˜μ§€λ§Œ λŒ€λΆ€λΆ„μ˜ DELETE μš”μ²­μ€ λ°”λ”” 없이 μ‹€ν–‰λ˜κΈ°λ„ ν•©λ‹ˆλ‹€.

2. λ°”λ””λ₯Ό μ‚¬μš©ν•˜λŠ” 이유.

  • 1. λŒ€μš©λŸ‰ 데이터 전솑.
    • GET μš”μ²­μ—μ„œ μ‚¬μš©λ˜λŠ” 쿼리 λ¬Έμžμ—΄μ€ 데이터 크기에 μ œν•œμ΄ μžˆμŠ΅λ‹ˆλ‹€.
    • 반면, λ°”λ””λ₯Ό μ‚¬μš©ν•˜λŠ” POSTλ‚˜ PUT μš”μ²­μ€ 큰 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, λŒ€μš©λŸ‰ νŒŒμΌμ΄λ‚˜ 이미지 등을 전솑할 λ•Œ λ°”λ””λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • 2. λ³΄μ•ˆ.
    • 바디에 ν¬ν•¨λœ λ°μ΄ν„°λŠ” URL에 λ…ΈμΆœλ˜μ§€ μ•ŠμœΌλ©°, λΈŒλΌμš°μ €μ˜ μ£Όμ†Œ μ°½μ΄λ‚˜ μ„œλ²„ λ‘œκ·Έμ— κΈ°λ‘λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    • λ”°λΌμ„œ, λΉ„λ°€ 번호, κ°œμΈμ •λ³΄, 결제 정보 λ“± λ―Όκ°ν•œ 데이터λ₯Ό 전솑할 λ•Œ λ°”λ””λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ μ ˆν•©λ‹ˆλ‹€.
  • 3. κ΅¬μ‘°ν™”λœ 데이터 전솑.
    • JSON, XML, HTMLκ³Ό 같은 κ΅¬μ‘°ν™”λœ 데이터λ₯Ό μ‰½κ²Œ 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ°”λ””λŠ” λ³΅μž‘ν•œ 데이터 ꡬ쑰λ₯Ό λ‹΄μ•„μ„œ μ„œλ²„λ‘œ 전달할 수 μžˆλŠ” μœ μ—°ν•œ 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.

3. μš”μ²­ λ°”λ””μ˜ ν˜•μ‹(Content-Type)

  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„λ‘œ 데이터λ₯Ό 전솑할 λ•Œ, μš”μ²­ λ°”λ””μ˜ 데이터 ν˜•μ‹μ€ Content-Type ν—€λ”λ‘œ μ§€μ •λ©λ‹ˆλ‹€.
  • 일반적으둜 μ‚¬μš©λ˜λŠ” 데이터 ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
    • 1. application/json
      • JSON(JavaScript Object Notation) ν˜•μ‹μœΌλ‘œ 데이터λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€.
      • RESTful APIμ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” ν˜•μ‹μž…λ‹ˆλ‹€.
        {
          "username": "example_user",
          "password": "example_password"
        }
      
    • 2. application/x-www-form-urlencoded
      • HTML νΌμ—μ„œ μ „μ†‘λ˜λŠ” κΈ°λ³Έ ν˜•μ‹μœΌλ‘œ, ν‚€-κ°’ 쌍으둜 URL 인코딩 λ°©μ‹μœΌλ‘œ μ „μ†‘ν•©λ‹ˆλ‹€.
      • λ°μ΄ν„°λŠ” URL 쿼리 λ¬Έμžμ—΄κ³Ό μœ μ‚¬ν•œ ν˜•μ‹μœΌλ‘œ 바디에 μ „μ†‘λ©λ‹ˆλ‹€.
        username=example_user&password=example_password
      
    • 3. multipart/form-data
      • 파일 μ—…λ‘œλ“œμ™€ 같이 λ‹€μ–‘ν•œ ν˜•μ‹μ˜ 데이터λ₯Ό ν•¨κ»˜ 전솑할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
      • 각 νŒŒμΌμ΄λ‚˜ 데이터 ν•­λͺ©μ„ λ³„λ„μ˜ 파트둜 κ΅¬λΆ„ν•˜μ—¬ 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.
      • 특히 이미지, λ¬Έμ„œμ™€ 같은 νŒŒμΌμ„ 전솑할 λ•Œ 많이 μ‚¬μš©λ©λ‹ˆλ‹€.
        Content-Type: multipart/form-data; boundary=------------------------boundary
        --------------------------boundary
        Content-Disposition: form-data; name="username"
      
        example_user
        --------------------------boundary
        Content-Disposition: form-data; name="file"; filename="example.png"
        Content-Type: image/png
      
        (파일 데이터)
        --------------------------boundary--
      
    • 4. text/plain
      • λ‹¨μˆœ ν…μŠ€νŠΈ 데이터λ₯Ό 전솑할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
      • 예λ₯Ό λ“€μ–΄, κ°„λ‹¨ν•œ λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•˜κ±°λ‚˜ ν…ŒμŠ€νŠΈμš©μœΌλ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

4. μš”μ²­ λ°”λ”” μ‚¬μš© μ˜ˆμ‹œ.

  • 1. POST μš”μ²­ μ˜ˆμ‹œ (JSON 데이터 전솑)
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„λ‘œ μ‚¬μš©μž 등둝 μš”μ²­μ„ 보낼 λ•Œ, JSON ν˜•μ‹μœΌλ‘œ 데이터λ₯Ό 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.
      POST /register HTTP/1.1
      Host: www.example.com
      Content-Type: application/json
        
      {
          "username": "new_user",
          "email": "user@example.com",
          "password": "user_password"
      }
    
    • Content-Type
      • μš”μ²­ λ°”λ””κ°€ JSON ν˜•μ‹μž„μ„ μ„œλ²„μ— μ•Œλ¦½λ‹ˆλ‹€.
    • λ°”λ””
      • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ „μ†‘ν•˜λ €λŠ” 데이터가 JSON ν˜•μ‹μœΌλ‘œ ν¬ν•¨λ©λ‹ˆλ‹€.
  • 2. PUT μš”μ²­ μ˜ˆμ‹œ (폼 데이터 전솑)
    • μ‚¬μš©μžμ˜ 정보λ₯Ό μˆ˜μ •ν•  λ•Œ, 폼 데이터 ν˜•μ‹μœΌλ‘œ 데이터λ₯Ό 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.
      PUT /update-profile HTTP/1.1
      Host: www.example.com
      Content-Type: application/x-www-form-urlencoded
        
      username=updated_user&email=updated@example.com
    
    • Content-Type
      • application/x-www-form-urlencoded λŠ” ν‚€-κ°’ 쌍의 폼 데이터λ₯Ό μ „μ†‘ν•˜λŠ” ν˜•μ‹μž…λ‹ˆλ‹€.
    • λ°”λ””
      • μˆ˜μ •λœ μ‚¬μš©μž 정보λ₯Ό ν‚€-κ°’ 쌍으둜 ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

5. λ°”λ””μ˜ λ³΄μ•ˆ.

  • λ°”λ””λ₯Ό μ‚¬μš©ν•˜μ—¬ μ „μ†‘λ˜λŠ” λ°μ΄ν„°λŠ” URL에 λ…ΈμΆœλ˜μ§€ μ•Šμ§€λ§Œ, μ—¬μ „νžˆ λ„€νŠΈμ›Œν¬λ₯Ό 톡해 μ „μ†‘λ˜λŠ” λ™μ•ˆ λ³΄μ•ˆμ΄ ν•„μš”ν•©λ‹ˆλ‹€.
  • 이λ₯Ό μœ„ν•΄ HTTPSλ₯Ό μ‚¬μš©ν•˜μ—¬ 톡신을 μ•”ν˜Έν™”ν•˜λŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€.
  • HTTPSλ₯Ό μ‚¬μš©ν•˜λ©΄ 바디에 ν¬ν•¨λœ 데이터가 μ€‘κ°„μ—μ„œ κ°€λ‘œμ±„μ΄κ±°λ‚˜ λ³€μ‘°λ˜μ§€ μ•Šλ„λ‘ λ³΄ν˜Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.

6. μš”μ•½.

  • λ°”λ””λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„λ‘œ 데이터λ₯Ό 전솑할 λ•Œ μš”μ²­ λ©”μ‹œμ§€μ˜ 본문에 ν¬ν•¨λ˜λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€.
  • 주둜 POST, PUT, PATCH와 같은 μš”μ²­μ—μ„œ μ‚¬μš©λ˜λ©°, λŒ€μš©λŸ‰ λ°μ΄ν„°λ‚˜ λ―Όκ°ν•œ 정보λ₯Ό μ•ˆμ „ν•˜κ²Œ μ „μ†‘ν•˜λŠ” 데 μ ν•©ν•©λ‹ˆλ‹€.
  • λ°”λ””μ—λŠ” JSON, 폼 데이터, 파일 λ“± λ‹€μ–‘ν•œ ν˜•μ‹μ˜ 데이터λ₯Ό 포함할 수 있으며, URL에 λ…ΈμΆœλ˜μ§€ μ•Šμ•„ λ³΄μ•ˆ μΈ‘λ©΄μ—μ„œ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.