Young & Rich

Python Request 모듈을 사용하여, 간단하게 HTTP API 를 사용할 수 있습니다.

 

requests 모듈을 사용하여 간단하게 get, post 동작을 수행할 수 있습니다.

 

HTTP Protocol 로 API 요청할 때 기본적으로 필요한 정보를 먼저 정리하겠습니다.

 

[ Request ]

1. URL

: 요청할 URL 입니다. HTTP(S) 정보와, IP 혹은 DDNS 주소, 포트, 요청 URL

 

- http://192.168.10.31:8080/request_url

<http or https>://<IP>:<port></request url>

 

 

2. auth

: auth 는 Basic, Digest 를 주로 사용합니다.

request 모듈에서 ID/PW 를 통해 알아서 인증을 해줍니다.

from requests.auth import HTTPBasicAuth, HTTPDigestAuth

basic_auth = HTTPBasicAuth('admin', '1234')
digest_auth = HTTPDigestAuth('admin', '1234')

 

3. timeout

: 서버가 실행되어 있지 않거나, 또는 오동작으로 정상 응답을 주지 않을 수 있습니다.

해당 Parameter는 최대 Server 의 응답을 기다리는 시간입니다.

 

 

4. Header

: POST 을 통해 데이터를 전송할 때, Header 에 Parameter Name:Value 로 값을 넣을 수 있습니다.

 

 

< GET 예제 >

import requests
from requests.auth import HTTPBasicAuth, HTTPDigestAuth

auth = HTTPDigestAuth(username, password)

try:
	r = requests.get('http://192.168.10.90:8080/device/info', auth=auth, timeout=5, verify=False)

# Timeout 처리
except requests.exceptions.Timeout:
	return 408

# InterError 및 기타에러 처리
except Exception as e:
	print(e)
	return 500

print(r.status_code)
print(r.text)

 

< POST 예제 >

import json
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
import requests

auth = HTTPBasicAuth(username, password)

event_str = 'enter:preset1'

try:
	r = requests.post('http://192.168.10.12:8080/pushEvent', auth=auth, \
headers = {'Content-Type': 'text/xml; charset=utf-8;', \
data=event_str.encode('UTF-8'), timeout=5, verify=False)

except requests.exceptions.Timeout:
	return 408

except Exception as e:
	print(e)
	return 500

print(r.status_code)
print(r.text)

 

 

위의 예제와 같이 requests 모듈을 활용한 HTTP Protocol API 를 사용할 수 있습니다.

 

그럼 20000.

 

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band