Python

[requests] http cURL 요청 처리

비번변경 2021. 10. 31. 20:58

개요

cURL과 같은 웹 요청을 Python으로 처리하는 방법을 적어둔다.

 

 

cURL; client URL

cURL 로고

윈도우와 리눅스에 기본 설치되고 있는 웹 개발 툴

http, https, ftp, sftps, smtp, telnet 등의 다양한 프로토콜을 이용해 데이터를 전송하기 위한 라이브러리와 명령 줄 도구를 제공한다.

 

명령어

curl -X <METHOD> "<URL>" -H "<HEADER>" -d '{<DATA_DICT>}'
# -X : --request. 요청 메소드 지정
# -H : --header. HTTP Header에 추가
# -d : --data. HTTP POST data 지정

# 예시
curl -X POST "https://gitlab.example.com/api/v4/projects" -H "Accept-Encoding: gzip" -H "Content-Type: application/json" -d '{"message": "hello"}'

 

 

Requests 모듈

Requests 모듈 로고

여러 프로토콜 중 http를 이용한 요청을 다룰 때 사용한다.

공식 문서 : https://docs.python-requests.org/en/latest/

 

설치

기본 내장 모듈이 아니기 때문에 설치가 필요하다.

pip install requests

 

사용

- 요청 방법

import requests

r = requests.get(url)
r = requests.post(url)
r = requests.delete(url, data={"key":"value"})
r = requests.head(url)
r = requests.options(url)

 

- 매개변수(parameter) 전달

딕셔너리 형태의 문자열을 선언하여, params 값으로 지정하여 요청한다.

import requests

params = "{'key1': 'value1', 'key2': 'value2'}"
r = requests.get(url, params=params)

 

- data 전달

매개변수 전달하듯이 전달한다.

만약 요청 구조가 복잡한 경우, 딕셔너리 구조를 문자열로 변환하는 json 모듈을 이용하는 것이 좋다.

import requests
import json

data = {'outer': {'inner': 'value'}}
r = requests.post(URL, data=json.dumps(data))

이 외 header, cookies도 동일한 방식으로 전달한다.

 

- 응답 데이터(Response Content)

 

속성 설명
status_code 응답 상태
headers headers 정보
cookies cookies 정보
encoding 데이터 인코딩
text 문자열 형의 데이터
content bytes 형의 데이터
json() dict 타입의 데이터

 

예시) 문자열 데이터 사용

import requests
import json

data = {'outer': {'inner': 'value'}}
r = requests.post(URL, data=json.dumps(data))
txt = r.text

 

참고 ) curl converter

cURL 명령어를 입력하면 Java, Python 등의 언어에서 사용할 수 있는 형태 또는 Json 형식으로 변환해주는 사이트이다.

https://curlconverter.com/

 

Convert curl commands to code

GitHub is matching all contributions to this project on Github Sponsors. This is a surprisingly good deal and I'm not sure how long it's going to last. Contribute Now

curlconverter.com