Python에서 REST API 인터페이스를 호출하는 몇 가지 방법 요약

자동화 운영을 해 본 학생들은 REST API 인터페이스로 어떤 동작을 완성한 적이 있다고 믿는다.API는 성숙한 시스템에 필요한 인터페이스로 다른 시스템이나 스크립트에 호출될 수 있으며 자동화 운영의 필수 과목이기도 하다.
본고는 주로python에서 REST API를 호출하는 몇 가지 방식을 소개하는데, 다음은python에서 사용할 라이브러리입니다.
  • - urllib2
  • - httplib2
  • - pycurl
  • - requests
  • urllib2
    - Sample1
    
    import urllib2, urllib
    github_url = 'https://api.github.com/user/repos'
    password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
    password_manager.add_password(None, github_url, 'user', '***')
    auth = urllib2.HTTPBasicAuthHandler(password_manager) # create an authentication handler
    opener = urllib2.build_opener(auth) # create an opener with the authentication handler
    urllib2.install_opener(opener) # install the opener... 
    request = urllib2.Request(github_url, urllib.urlencode({'name':'Test repo', 'description': 'Some test repository'})) # Manual encoding required
    handler = urllib2.urlopen(request)
    print handler.read()
    - Sample2
    
    import urllib2
    url = 'http://ems.vip.ebay.com/removeSIforcloud.cgi?ip=' + ip
    req = urllib2.Request(url)
    req.add_header('IAF',abc.token_authiaas)
    try:
      resp = urllib2.urlopen(req)
    except urllib2.HTTPError, error:
      print "Cannot remove service instance!", error
      sys.exit(1)
    response = resp.read()
    print response
    - Sample3
    
    import urllib2, urllib, base64
    url = "https://reparo.stratus.ebay.com/reparo/bootstrap/registerasset/" + rackid + "/" + asset
    data = urllib.urlencode({
            'reservedResource':'RR-Hadoop',
            'resourceCapability':'Production',
            'movetoironic':'False',
            'output':'json'
        })
    print "Bootstrap Asset jobs starting .............."
    
    base64string = base64.encodestring('%s:%s' % (user, passwd)).replace('
    ', '') request = urllib2.Request(url, data, headers={"Authorization" : "Basic %s" % base64string}) response = urllib2.urlopen(request).read() response_json = json.loads(response) response_status = response_json['status'] status_code = response_status['statusCode'] status = response_status['status'] message = response_status['message'] print status_code , status, message
    2. httplib2
    
    import urllib, httplib2
    github_url = '
    h = httplib2.Http(".cache")
    h.add_credentials("user", "******", "
    data = urllib.urlencode({"name":"test"})
    resp, content = h.request(github_url, "POST", data)
    print content
    3. pycurl
    
    import pycurl, json
    github_url = "
    user_pwd = "user:*****"
    data = json.dumps({"name": "test_repo", "description": "Some test repo"})
    c = pycurl.Curl()
    c.setopt(pycurl.URL, github_url)
    c.setopt(pycurl.USERPWD, user_pwd)
    c.setopt(pycurl.POST, 1)
    c.setopt(pycurl.POSTFIELDS, data)
    c.perform()
    4. requests
    
    import requests, json
    github_url = "
    data = json.dumps({'name':'test', 'description':'some test repo'}) 
    r = requests.post(github_url, data, auth=('user', '*****'))
    print r.json
    상기 몇 가지 방식은 모두 API를 호출하여 동작을 실행할 수 있으나requests라는 방식은 코드가 가장 간결하고 명확하니 채택하는 것을 권장합니다.
    이상은 Python이 REST API 인터페이스를 호출하는 몇 가지 방식을 종합한 상세한 내용입니다. 더 많은 Python이 REST API 인터페이스를 호출하는 것에 관한 자료는 저희의 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기