HTTP ν€λ, νλΌλ―Έν°, μμΈ μ²λ¦¬
μΉ μλ²μ APIλ‘ μνΈμμ©ν λλ ν€λ(Header)
, νλΌλ―Έν°(Parameter)
λ±μΌλ‘ μμ²μ ꡬ체ννκ³ , μμΈ μ²λ¦¬
λ₯Ό ν΅ν΄ μ€λ₯λ₯Ό μ²λ¦¬νλ κ²μ΄ μ€μν©λλ€.
HTTP ν€λ(Header)
HTTP ν€λ
λ HTTP μμ²κ³Ό μλ΅ λ©μμ§μ μΌλΆλ‘, ν΄λΌμ΄μΈνΈμ μλ² κ°μ μ μ‘λλ μΆκ° μ 보λ₯Ό ν¬ν¨ν©λλ€.
μ΄ ν€λλ λ©μμ§μ λ³Έλ¬Έ(body)κ³Όλ λ³λλ‘ μ μ‘λλ©°, λ©μμ§μ μμ±, λ³Έλ¬Έμ λ΄μ©, ν΄λΌμ΄μΈνΈμ μλ²μ μΈλΆ μ€μ λ±μ λν λ°μ΄ν°λ₯Ό λ΄κ³ μμ΅λλ€.
ν¬κ² μμ²(Request) ν€λ
μ μλ΅(Response) ν€λ
λ‘ λλλ©°, κ°κ° μμ²κ³Ό μλ΅μ λν μΆκ° μ 보λ₯Ό ν¬ν¨ν©λλ€.
μ¬μ©λ²
headers
맀κ°λ³μλ‘ 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 μμΈλ₯Ό λ°μμν΅λλ€.
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
Execution Result