Python을 사용하여 RESTful 서비스에서 JSON 데이터를 가져 오는 표준 방법이 있습니까?
인증을 위해 kerberos를 사용해야합니다.
일부 스 니펫이 도움이 될 것입니다.
답변:
요점을 놓치지 않는 한 이와 같은 것이 작동합니다.
import json
import urllib2
json.load(urllib2.urlopen("url"))
나는 요청 라이브러리에 이것을 시도 할 것입니다. 기본적으로 동일한 작업에 사용할 표준 라이브러리 모듈 (예 : urllib2, httplib2 등) 주위에 래퍼를 사용하는 것이 훨씬 더 쉽습니다. 예를 들어 기본 인증이 필요한 URL에서 json 데이터를 가져 오려면 다음과 같습니다.
import requests
response = requests.get('http://thedataishere.com',
auth=('user', 'password'))
data = response.json()
kerberos 인증의 경우 요청 프로젝트 에는 요청 과 함께 사용할 수있는 kerberos 인증 클래스를 제공하는 reqests-kerberos 라이브러리가 있습니다 .
import requests
from requests_kerberos import HTTPKerberosAuth
response = requests.get('http://thedataishere.com',
auth=HTTPKerberosAuth())
data = response.json()
기본적으로 서비스에 HTTP 요청을 한 다음 응답 본문을 구문 분석해야합니다. httplib2를 사용하고 싶습니다.
import httplib2 as http
import json
try:
from urlparse import urlparse
except ImportError:
from urllib.parse import urlparse
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json; charset=UTF-8'
}
uri = 'http://yourservice.com'
path = '/path/to/resource/'
target = urlparse(uri+path)
method = 'GET'
body = ''
h = http.Http()
# If you need authentication some example:
if auth:
h.add_credentials(auth.user, auth.password)
response, content = h.request(
target.geturl(),
method,
body,
headers)
# assume that content is a json reply
# parse content with the json module
data = json.loads(content)
Python 3을 사용하려면 다음을 사용할 수 있습니다.
import json
import urllib.request
req = urllib.request.Request('url')
with urllib.request.urlopen(req) as response:
result = json.loads(response.readall().decode('utf-8'))
무엇보다도 먼저 필요한 것은 urllib2 또는 httplib2입니다. 어쨌든 일반적인 REST 클라이언트가 필요한 경우 이것을 확인하십시오.
https://github.com/scastillo/siesta
그러나 나는 라이브러리의 기능 세트가 아마도 oauth 등을 사용하기 때문에 대부분의 웹 서비스에서 작동하지 않을 것이라고 생각합니다 ... 또한 많은 리디렉션 등을 처리 할 필요가 없다면 httplib2에 비해 여전히 작동해야하는 httplib를 통해 작성되었다는 사실이 마음에 들지 않습니다.