標籤:python api
相信做過自動化營運的同學都用過API介面來完成某些動作。API是一套成熟系統所必需的介面,可以被其他系統或指令碼來調用,這也是自動化營運的必修課。
本文主要介紹python中調用API的幾種方式,下面是python中會用到的庫。
- urllib2
- httplib2
- pycurl
- requests
urllib2
import urllib2, urllibgithub_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 handleropener = urllib2.build_opener(auth) # create an opener with the authentication handlerurllib2.install_opener(opener) # install the opener... request = urllib2.Request(github_url, urllib.urlencode({‘name‘:‘Test repo‘, ‘description‘: ‘Some test repository‘})) # Manual encoding requiredhandler = urllib2.urlopen(request)print handler.read()
2. httplib2
import urllib, httplib2github_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, jsongithub_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, jsongithub_url = "data = json.dumps({‘name‘:‘test‘, ‘description‘:‘some test repo‘}) r = requests.post(github_url, data, auth=(‘user‘, ‘*****‘))print r.json
以上幾種方式都可以調用API來執行動作,但requests這種方式代碼最簡潔,最清晰,建議採用。
本文出自 “Linux和網路” 部落格,轉載請與作者聯絡!
Python調用API介面的幾種方式