[PYTHON] 파이썬에서 HTTP PUT을 수행 할 수있는 방법이 있습니까?
PYTHON파이썬에서 HTTP PUT을 수행 할 수있는 방법이 있습니까?
파이썬에서 HTTP PUT을 사용하여 서버에 데이터를 업로드해야합니다. urllib2 문서를 간략히 읽었을 때부터 HTTP POST 만 수행합니다. 파이썬에서 HTTP PUT을 수행 할 수있는 방법이 있습니까?
해결법
-
==============================
1.과거에는 파이썬 HTTP 라이브러리를 다양하게 사용했고, 필자는 '요청'을 가장 좋아하는 것으로 정했습니다. 기존 libs 꽤 쓸만한 인터페이스를했지만 코드가 너무 간단한 작업을위한 몇 줄되는 결국 수 있습니다. 요청의 기본 PUT은 다음과 같습니다.
과거에는 파이썬 HTTP 라이브러리를 다양하게 사용했고, 필자는 '요청'을 가장 좋아하는 것으로 정했습니다. 기존 libs 꽤 쓸만한 인터페이스를했지만 코드가 너무 간단한 작업을위한 몇 줄되는 결국 수 있습니다. 요청의 기본 PUT은 다음과 같습니다.
payload = {'username': 'bob', 'email': 'bob@bob.com'} >>> r = requests.put("http://somedomain.org/endpoint", data=payload)
그런 다음 응답 상태 코드를 확인할 수 있습니다.
r.status_code
또는 다음과 같은 응답 :
r.content
요청에는 많은 synactic sugar와 귀하의 삶을 편하게 해주는 지름길이 있습니다.
-
==============================
2.
import urllib2 opener = urllib2.build_opener(urllib2.HTTPHandler) request = urllib2.Request('http://example.org', data='your_put_data') request.add_header('Content-Type', 'your/contenttype') request.get_method = lambda: 'PUT' url = opener.open(request)
-
==============================
3.Httplib은 더 깨끗한 선택처럼 보입니다.
Httplib은 더 깨끗한 선택처럼 보입니다.
import httplib connection = httplib.HTTPConnection('1.2.3.4:1234') body_content = 'BODY CONTENT GOES HERE' connection.request('PUT', '/url/path/to/put/to', body_content) result = connection.getresponse() # Now result.status and result.reason contains interesting stuff
-
==============================
4.httplib 모듈을 살펴 봐야합니다. 그것은 당신이 원하는 종류의 HTTP 요청을 할 수 있도록해야합니다.
httplib 모듈을 살펴 봐야합니다. 그것은 당신이 원하는 종류의 HTTP 요청을 할 수 있도록해야합니다.
-
==============================
5.RESTful API 클라이언트 역할을 할 수 있도록이 문제를 너무 오래 동안 해결해야했습니다. 나는 그것이 GET과 POST 외에도 PUT과 DELETE를 보낼 수 있기 때문에 httplib2에 정착했다. Httplib2는 표준 라이브러리의 일부가 아니지만 치즈 샵에서 쉽게 얻을 수 있습니다.
RESTful API 클라이언트 역할을 할 수 있도록이 문제를 너무 오래 동안 해결해야했습니다. 나는 그것이 GET과 POST 외에도 PUT과 DELETE를 보낼 수 있기 때문에 httplib2에 정착했다. Httplib2는 표준 라이브러리의 일부가 아니지만 치즈 샵에서 쉽게 얻을 수 있습니다.
-
==============================
6.요청 라이브러리를 사용할 수 있기 때문에 urllib2 접근 방식과 비교하여 많은 것을 단순화합니다. 먼저 pip에서 설치하십시오.
요청 라이브러리를 사용할 수 있기 때문에 urllib2 접근 방식과 비교하여 많은 것을 단순화합니다. 먼저 pip에서 설치하십시오.
pip install requests
요청 설치에 대한 추가 정보.
그런 다음 put 요청을 설정하십시오.
import requests import json url = 'https://api.github.com/some/endpoint' payload = {'some': 'data'} # Create your header as required headers = {"content-type": "application/json", "Authorization": "<auth-key>" } r = requests.put(url, data=json.dumps(payload), headers=headers)
요청 라이브러리에 대한 빠른 시작을 참조하십시오. 나는 이것이 urllib2보다 훨씬 간단하다고 생각하지만이 추가 패키지가 설치되고 임포트 될 것을 요구한다.
-
==============================
7.Joe Gregario의 httplib2도 좋습니다. 표준 lib 디렉토리에서 httplib 대신 이것을 정기적으로 사용합니다.
Joe Gregario의 httplib2도 좋습니다. 표준 lib 디렉토리에서 httplib 대신 이것을 정기적으로 사용합니다.
-
==============================
8.이것은 python3에서 더 잘 만들어졌으며 stdlib 문서에 설명되어 있습니다.
이것은 python3에서 더 잘 만들어졌으며 stdlib 문서에 설명되어 있습니다.
urllib.request.Request 클래스는 python3에서 method = ... 매개 변수를 얻었다.
몇 가지 샘플 사용법 :
req = urllib.request.Request('https://example.com/', data=b'DATA!', method='PUT') urllib.request.urlopen(req)
-
==============================
9.put.py를 살펴 보셨습니까? 나는 과거에 그것을 사용했습니다. urllib로 자신의 요청을 해킹 할 수도 있습니다.
put.py를 살펴 보셨습니까? 나는 과거에 그것을 사용했습니다. urllib로 자신의 요청을 해킹 할 수도 있습니다.
-
==============================
10.물론 기존의 표준 라이브러리를 사용하여 소켓에서부터 조정할 수있는 모든 수준의 urllib까지 자신 만의 롤을 만들 수 있습니다.
물론 기존의 표준 라이브러리를 사용하여 소켓에서부터 조정할 수있는 모든 수준의 urllib까지 자신 만의 롤을 만들 수 있습니다.
http://pycurl.sourceforge.net/
"PyCurl은 libcurl에 대한 Python 인터페이스입니다."
"libcurl은 무료이며 사용하기 쉬운 클라이언트 측 URL 전송 라이브러리입니다 ... ... HTTP PUT"
"PycURL의 주된 단점은 Python의 멋진 클래스 계층 구조가없는 libcurl보다 상대적으로 얇은 레이어라는 점입니다. 이는 libcurl의 C API에 익숙하지 않은 이상 약간의 가파른 학습 곡선이 있음을 의미합니다."
-
==============================
11.표준 라이브러리에 머물고 싶다면 urllib2.Request를 하위 클래스화할 수 있습니다.
표준 라이브러리에 머물고 싶다면 urllib2.Request를 하위 클래스화할 수 있습니다.
import urllib2 class RequestWithMethod(urllib2.Request): def __init__(self, *args, **kwargs): self._method = kwargs.pop('method', None) urllib2.Request.__init__(self, *args, **kwargs) def get_method(self): return self._method if self._method else super(RequestWithMethod, self).get_method() def put_request(url, data): opener = urllib2.build_opener(urllib2.HTTPHandler) request = RequestWithMethod(url, method='PUT', data=data) return opener.open(request)
from https://stackoverflow.com/questions/111945/is-there-any-way-to-do-http-put-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 : 문자열에서 \ xa0을 제거 하시겠습니까? (0) | 2018.10.06 |
---|---|
[PYTHON] Python 실행 파일 libpython 공유 라이브러리를 찾을 수 없습니다. (0) | 2018.10.06 |
[PYTHON] 설치 스크립트가 오류와 함께 종료되었습니다 : 'x86_64-linux-gnu-gcc'명령이 종료 상태 1로 실패했습니다 (0) | 2018.10.06 |
[PYTHON] 파이썬에서 문자열에서 부울로 변환 하시겠습니까? (0) | 2018.10.05 |
[PYTHON] 문자열과 바이트 문자열의 차이점은 무엇입니까? (0) | 2018.10.05 |