Python의 requests 라이브러리는 HTTP 요청을 보낼 때 데이터를 전달하기 위해 json, data, params 의 옵션이 존재합니다.
이들은 각각 사용하는 목적과 방식이 다릅니다.
1. params: URL 쿼리 문자열에 데이터를 추가
사용 목적: GET 요청이나 URL에 데이터를 추가할 때 사용됩니다.
전송 방식: 쿼리 문자열로 데이터를 URL에 포함합니다.
요청 예시
import requests
url = "https://example.com/api"
params = {"key1": "value1", "key2": "value2"}
response = requests.get(url, params=params)
print(response.url)
출력 예시
https://example.com/api?key1=value1&key2=value2
주 사용 목적: 검색어, 필터링, 페이징 등 URL에 데이터를 포함할 때.
2. data: HTTP 본문에 폼 데이터 전송
사용 목적: POST 요청 등에서 데이터를 application/x-www-form-urlencoded 형식으로 전송할 때 사용됩니다.
전송 방식: HTTP 요청 본문에 데이터를 URL 인코딩된 키-값 쌍으로 포함.
요청 예시
import requests
url = "https://example.com/api"
data = {"key1": "value1", "key2": "value2"}
response = requests.post(url, data=data)
print(response.text)
주 사용 목적: 웹 폼 데이터 전송.
3. json: HTTP 본문에 JSON 데이터 전송
사용 목적: JSON 데이터를 API 서버에 전송할 때 사용됩니다.
전송 방식: HTTP 요청 본문에 JSON 형식으로 데이터를 직렬화하여 포함.
자동으로 Content-Type 헤더 추가: application/json으로 설정.
요청 예시
import requests
url = "https://example.com/api"
json_data = {"key1": "value1", "key2": "value2"}
response = requests.post(url, json=json_data)
print(response.text)
주 사용 목적: REST API에서 JSON 형식 데이터를 주고받을 때.
4. 요약
옵션 | 전송 방식 | 사용 목적 | 예시 |
params | URL 쿼리 문자열 | GET 요청에 데이터 추가 | https://example.com?key=value |
data | HTTP 본문에 URL 인코딩된 키-값 쌍 포함 |
POST 요청에서 폼 데이터 전송 | key=value&key2=value2 |
json | HTTP 본문에 JSON 데이터 직렬화하여 포함 |
POST/PUT 요청에서 JSON 데이터 전송 | {"key": "value", "key2": "value2"} |
GET 요청에서 데이터를 전달해야 하면 → params.
POST 요청에서 폼 데이터를 전송해야 하면 → data.
POST/PUT 요청에서 JSON 데이터를 전송해야 하면 → json.
'Backend > Python' 카테고리의 다른 글
[Python] Supabase 연결 오류 (0) | 2024.12.31 |
---|---|
[Python] 날짜 시간대 변경하기 (1) | 2024.12.09 |
[Python] 비트코인 자동매매 - 비동기 요청하기 (1) | 2024.06.18 |
[FastAPI] SQL Alchemy 연결 오류 해결 (0) | 2024.06.05 |
[Python] 비트코인 자동매매 - 백테스팅 (0) | 2024.05.15 |