Daily Develope

[Web] Multipart/form-data 요청(Request) in Python 본문

Develope/Web

[Web] Multipart/form-data 요청(Request) in Python

noggame 2023. 3. 27. 07:44

"requests" 모듈을 사용하는 경우 Content-Type을 명시 혹은 생략하는 2가지 방법이있다.
만약 호출하려는 api 에서 Content-Type(~Header)을 검사하는 경우라면 전자(Content-Type 명시)의 방법을, 아니라면 후자의 방법을 사용하면된다.

방법1) Content-Type 명시

: Header에서 Content-Type으로 MultipartEncoder로 생성해 boundary가 추가된 content-type을 받아 사용한다. (pre-cond. requests_toolbelt 설치)

import requests
from requests_toolbelt import MultipartEncoder

_data = MultipartEncoder(fields=[("tfile", open("my/file/path.ext", "rb"))])
_headers = {
    "Content-Type": _data.content_type,
    "Accept": "*/*"
    # ...
}

response = requests.post("https://api-url.com", headers=_headers, data=_data)

방법2) Content-Type 생략

: Header에서 Content-Type을 생략하고 files로 데이터를 전송한다. 이 경우 requests 내부적으로 boundary를 추가해 전송한다.

import requests

_files = {
    "tfile": open("my/file/path.ext", "rb")
}

_headers = {
    "Accept": "*/*"
    # ...
}

response = requests.post("https://api-url.com", headers=_headers, files=_files)
Comments