python-requestsAan de slag met python-aanvragen


Opmerkingen

HTTP voor mensen

Requests is de enige niet-GMO HTTP-bibliotheek voor Python, veilig voor menselijke consumptie.

Met Verzoeken kunt u organische, met gras gevoede HTTP/1.1 aanvragen verzenden, zonder dat u handmatig hoeft te werken. Het is niet nodig om handmatig queryreeksen aan uw URL's toe te voegen of om uw POST-gegevens te formuleren. Keep-alive en HTTP-verbindingspooling zijn 100% automatisch, aangedreven door urllib3 , dat is ingebed in Verzoeken.

De kracht van verzoeken:

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

Het antwoord lezen

response = requests.get("https://api.github.com/events")
text_resp = response.text
 

JSON-reactie : voor antwoorden met json-indeling biedt het pakket een ingebouwde decoder

response = requests.get('https://api.github.com/events')
json_resp = response.json()
 

Deze methode zal een ValueError genereren in geval van een lege reactie of onveranderlijke inhoud.

GET-aanvragen

requests.get() maakt een GET-verzoek aan:

response = requests.get('https://example.com/')
 

Geef queryparameters als woordenboek door aan het argument params :

response = requests.get('https://example.com/', params={"a": 1, "b": 2})
 

Voor GET-aanvragen die mogelijk basisverificatie vereisen, kunt u de auth parameter als volgt opnemen:

response = requests.get('https://api.github.com/user', auth=('user', 'pass'))
 

Installatie of instellingen

python-requests is beschikbaar op PyPI, de Python Package Index, wat betekent dat het kan worden geïnstalleerd via pip:

pip install requests
 

Up-to-date broncode is te vinden op de GitHub-repository van aanvragen

Als u het vanaf de bron wilt installeren, kunt u dit doen door de GitHub-repository te klonen:

git clone git://github.com/kennethreitz/requests.git
 

Of door de tarball te krijgen ( -O schrijft de uitvoer naar bestand; -L volgt omleidingen):

curl -OL https://github.com/kennethreitz/requests/tarball/master
 

Vervolgens kunt u het installeren door setup.py

python setup.py install
 

Hoe u het ook hebt geïnstalleerd, u kunt het op de gebruikelijke manier gebruiken

>>> import requests
>>> requests.get('http://stackoverflow.com')
 

Andere verzoekmethoden

De requests heeft functies op het hoogste niveau voor de meeste HTTP-methoden:

r = requests.put('https://example.com/', data=put_body)
r = requests.delete('https://example.com/')
r = requests.head('https://example.com/')
r = requests.options('https://example.com/')
r = requests.patch('https://example.com/', data=patch_update)
 

POST-aanvragen

POST-aanvragen worden gedaan met de methode request.post() .

Als u een webformulieraanvraag als POST-body moet verzenden, geeft u een woordenboek door met sleutel / waarde-paren als data ; requests zullen deze coderen naar een application/x-www-form-urlencoded body:

r = requests.post('https://github.com/', data={"a": 1, "b": 2})
 

Als u een json-payload wilt POST, kunt u json= . Hiermee wordt de header Content-Type automatisch ingesteld op application/json

r = requests.post('https://github.com/', data={"a": 1, "b": 2})
 

Statuscodes lezen

Het kenmerk status_code bevat de statuscode van het antwoord

good_req = requests.get('https://api.github.com/events')
code_200 = good_req.status_code

notfound_req = requests.get('https://api.github.com/not_found')
code_404 = notfound_req.status_code
 

requests.codes.__dict__ geeft een lijst met beschikbare http-statuscodes.

Het is mogelijk om gebruiker raise_for_status te controleren of de status_code 4xx of 5xx was en in dat geval een overeenkomstige uitzondering op te roepen.

good_req = requests.get('https://api.github.com/events')
good_req.raise_for_status()
# is a 200 status code so nothing happens

notfound_req = requests.get('https://api.github.com/not_found')
notfound_req.raise_for_status()
# raises requests.exceptions.HTTPError: 404 Client Error