Guidelines

HTTP 헀더, νŒŒλΌλ―Έν„°, μ˜ˆμ™Έ 처리

μ›Ή μ„œλ²„μ™€ API둜 μƒν˜Έμž‘μš©ν•  λ•ŒλŠ” 헀더(Header), νŒŒλΌλ―Έν„°(Parameter) λ“±μœΌλ‘œ μš”μ²­μ„ κ΅¬μ²΄ν™”ν•˜κ³ , μ˜ˆμ™Έ 처리λ₯Ό 톡해 였λ₯˜λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.


HTTP 헀더(Header)

HTTP ν—€λ”λŠ” HTTP μš”μ²­κ³Ό 응닡 λ©”μ‹œμ§€μ˜ μΌλΆ€λ‘œ, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ 간에 μ „μ†‘λ˜λŠ” μΆ”κ°€ 정보λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

이 ν—€λ”λŠ” λ©”μ‹œμ§€μ˜ λ³Έλ¬Έ(body)κ³ΌλŠ” λ³„λ„λ‘œ μ „μ†‘λ˜λ©°, λ©”μ‹œμ§€μ˜ 속성, 본문의 λ‚΄μš©, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ˜ μ„ΈλΆ€ μ„€μ • 등에 λŒ€ν•œ 데이터λ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

크게 μš”μ²­(Request) 헀더와 응닡(Response) ν—€λ”λ‘œ λ‚˜λ‰˜λ©°, 각각 μš”μ²­κ³Ό 응닡에 λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.


μ‚¬μš©λ²•

  • headers λ§€κ°œλ³€μˆ˜λ‘œ HTTP μš”μ²­μ— 헀더λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
HTTP μš”μ²­μ— 헀더 μΆ”κ°€
import requests # 헀더 μ •μ˜ headers = {'User-Agent': 'My User Agent 1.0'} # GET μš”μ²­μ— 헀더 μΆ”κ°€ response = requests.get('https://api.github.com', headers=headers)

HTTP νŒŒλΌλ―Έν„°(Parameter)

HTML νŒŒλΌλ―Έν„°λŠ” ν΄λΌμ΄μ–ΈνŠΈ(μ›Ή λΈŒλΌμš°μ €)κ°€ μ„œλ²„λ‘œ 정보λ₯Ό 보낼 λ•Œ, URL에 이름과 κ°’μ˜ 쌍으둜 κ΅¬μ„±λœ 정보(예: 검색 쿼리, νŽ˜μ΄μ§€ 번호)λ₯Ό μΆ”κ°€ν•˜μ—¬ HTTP μš”μ²­μ„ κ΅¬μ²΄ν™”ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ νŒŒλΌλ―Έν„°λŠ” URL의 끝에 ?λ₯Ό 뢙이고, 이름=κ°’μ˜ ν˜•νƒœλ‘œ μΆ”κ°€ν•©λ‹ˆλ‹€. μ—¬λŸ¬ 개의 νŒŒλΌλ―Έν„°λ₯Ό μΆ”κ°€ν•  λ•ŒλŠ” &둜 κ΅¬λΆ„ν•©λ‹ˆλ‹€.

# νŒŒλΌλ―Έν„° 이름 'query'에 κ°’ 'codefriends'λ₯Ό μΆ”κ°€ # νŒŒλΌλ―Έν„° 이름 'sort'에 κ°’ 'ascending'을 μΆ”κ°€ https://example.com/search?query=codefriends&sort=ascending

μ‚¬μš©λ²•

  • params λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ GET μš”μ²­μ— νŒŒλΌλ―Έν„°λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
νŒŒλΌλ―Έν„° μΆ”κ°€ 예제
import requests # query=python&page=2 νŒŒλΌλ―Έν„° μΆ”κ°€ parameters = {'query': 'python', 'page': 2} response = requests.get('https://api.github.com/search', params=parameters)

μ˜ˆμ™Έ 처리 방법

μ„œλ²„κ°€ λ°˜ν™˜ν•œ μ—λŸ¬ 응닡(4xx, 5xx μƒνƒœ μ½”λ“œ)을 μ μ ˆν•˜κ²Œ μ²˜λ¦¬ν•˜μ§€ μ•ŠμœΌλ©΄, ν”„λ‘œκ·Έλž¨μ΄ μ€‘λ‹¨λ˜κ±°λ‚˜ 였λ₯˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

참고둜 4xx μƒνƒœ μ½”λ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜λ₯Ό, 5xx μƒνƒœ μ½”λ“œλŠ” μ„œλ²„ 였λ₯˜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

requests λΌμ΄λΈŒλŸ¬λ¦¬λŠ” response.raise_for_status() λ©”μ†Œλ“œλ‘œ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€.

raise_for_status() λ©”μ†Œλ“œλŠ” 응닡 μƒνƒœ μ½”λ“œκ°€ 400 이상인 경우, HTTPError μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚΅λ‹ˆλ‹€.

HTTP 였λ₯˜ μ˜ˆμ™Έ 처리 예제
try: response = requests.get('https://api.github.com') response.raise_for_status() except requests.exceptions.HTTPError as err: print(f'HTTP 였λ₯˜ λ°œμƒ: {err}')

νƒ€μž„μ•„μ›ƒ(timeout) 처리

μš”μ²­μ΄ μ§€μ •λœ μ‹œκ°„ 내에 μ™„λ£Œλ˜μ§€ μ•Šμ„ κ²½μš°μ—λŠ” νƒ€μž„μ•„μ›ƒ μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œμΌœ λ¬΄ν•œνžˆ λŒ€κΈ°ν•˜λŠ” 상황을 λ°©μ§€ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

νƒ€μž„μ•„μ›ƒμ€ μš”μ²­μ— timeout λ§€κ°œλ³€μˆ˜λ₯Ό μΆ”κ°€ν•˜μ—¬ μš”μ²­μ˜ μ΅œλŒ€ λŒ€κΈ° μ‹œκ°„μ„ μ„€μ •ν•©λ‹ˆλ‹€.

μ΅œλŒ€ λŒ€κΈ° μ‹œκ°„μ„ λ„˜μœΌλ©΄ requests.exceptions.Timeout μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.

νƒ€μž„μ•„μ›ƒ 처리 예제
try: # μ΅œλŒ€ 10초 λŒ€κΈ° response = requests.get('https://api.github.com', timeout=10) except requests.exceptions.Timeout as err: print(f'μš”μ²­ μ‹œκ°„ 초과: {err}')

μ‹€μŠ΅

ν™”λ©΄ 였λ₯Έμͺ½ μ½”λ“œ μ‹€ν–‰ λ²„νŠΌμ„ λˆ„λ₯΄κ³ , 크둀링 κ²°κ³Όλ₯Ό ν™•μΈν•˜κ±°λ‚˜ μ½”λ“œλ₯Ό μˆ˜μ •ν•΄ λ³΄μ„Έμš”!

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result