[python] Python을 사용하여 RESTful 서비스에서 JSON 데이터를 얻으려면 어떻게해야합니까?

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를 통해 작성되었다는 사실이 마음에 들지 않습니다.


답변