logo

GET- und POST-Anfragen mit Python

In diesem Beitrag werden zwei HTTP-Anfragemethoden (Hypertext Transfer Protocol) GET- und POST-Anfragen in Python und deren Implementierung in Python erläutert. 

Was ist HTTP?  

HTTP ist eine Reihe von Protokollen, die die Kommunikation zwischen Clients und Servern ermöglichen sollen. Es fungiert als Anfrage-Antwort-Protokoll zwischen einem Client und einem Server. Ein Webbrowser kann der Client sein und eine Anwendung auf einem Computer, der eine Website hostet, kann der Server sein. Um eine Antwort vom Server anzufordern, gibt es hauptsächlich zwei Methoden:

  1. ERHALTEN : Um Daten vom Server anzufordern.
  2. POST : Um Daten zur Verarbeitung an den Server zu übermitteln.

Hier ist ein einfaches Diagramm, das das Grundkonzept der GET- und POST-Methoden erklärt.



GET- und POST-Anfragen mit Python' src='//techcodeview.com/img/python/28/get-and-post-requests-using-python.webp' title= 

 Nun geht es darum, HTTP-Anfragen einzureichen Python Wir können mehrere HTTP-Bibliotheken verwenden wie:

Die eleganteste und einfachste der oben aufgeführten Bibliotheken ist Requests. In diesem Artikel verwenden wir die Anforderungsbibliothek. Um die Requests-Bibliothek herunterzuladen und zu installieren, verwenden Sie den folgenden Befehl:

pip install requests

Eine Get-Anfrage stellen

Im obigen Beispiel werden der Breitengrad, der Längengrad und die formatierte Adresse eines bestimmten Standorts ermittelt, indem eine GET-Anfrage an die Google Maps-API gesendet wird. Ein API (Application Programming Interface) ermöglicht Ihnen den eingeschränkten Zugriff auf die internen Funktionen eines Programms. Und in den meisten Fällen liegen die bereitgestellten Daten vor JSON (JavaScript-Objektnotation) Format (das in Python als Wörterbuchobjekte implementiert ist!).

Python
# importing the requests library import requests # api-endpoint URL = 'http://maps.googleapis.com/maps/api/geocode/json' # location given here location = 'delhi technological university' # defining a params dict for the parameters to be sent to the API PARAMS = {'address':location} # sending get request and saving the response as response object r = requests.get(url = URL params = PARAMS) # extracting data in json format data = r.json() # extracting latitude longitude and formatted address # of the first matching location latitude = data['results'][0]['geometry']['location']['lat'] longitude = data['results'][0]['geometry']['location']['lng'] formatted_address = data['results'][0]['formatted_address'] # printing the output print('Latitude:%snLongitude:%snFormatted Address:%s' %(latitude longitudeformatted_address)) 

Ausgabe:

GET- und POST-Anfragen mit Python

Wichtige Schlussfolgerungen:

PARAMS = {'address':location}

Die URL für eine GET-Anfrage enthält im Allgemeinen einige Parameter. Für die Anfragen können Bibliotheksparameter als Wörterbuch definiert werden. Diese Parameter werden später analysiert und der Basis-URL oder dem API-Endpunkt hinzugefügt. Um die Rolle des Parameters zu verstehen, versuchen Sie es auszudrucken r.url nachdem das Antwortobjekt erstellt wurde. Sie werden etwa Folgendes sehen:

http://maps.googleapis.com/maps/api/geocode/json?address=delhi+technological+university

Dies ist die tatsächliche URL, an die die GET-Anfrage gestellt wird

r = requests.get(url = URL params = PARAMS)

Hier erstellen wir ein Antwortobjekt „r“, das die Anfrage-Antwort speichert. Wir verwenden die Methode request.get(), da wir eine GET-Anfrage senden. Die beiden Argumente, die wir übergeben, sind URL und das Parameterwörterbuch.

data = r.json()

Um nun die Daten aus dem Antwortobjekt abzurufen, müssen wir den rohen Antwortinhalt in eine Datenstruktur vom Typ JSON konvertieren. Dies wird durch die Verwendung der json()-Methode erreicht. Schließlich extrahieren wir die erforderlichen Informationen, indem wir das JSON-Typ-Objekt analysieren.

Eine POST-Anfrage stellen

In diesem Beispiel wird erläutert, wie Sie Ihre einfügen Quellcode Zu pastebin.com durch Senden einer POST-Anfrage an die PASTEBIN-API. Zunächst müssen Sie einen API-Schlüssel generieren hier anmelden und dann auf Ihr zugreifen API-Schlüssel hier.  

Python
# importing the requests library import requests # defining the api-endpoint API_ENDPOINT = 'https://pastebin.com/api/api_post.php' # your API key here API_KEY = 'XXXXXXXXXXXXXXXXX' # your source code here source_code = ''' print('Hello world!') a = 1 b = 2 print(a + b) ''' # data to be sent to api data = {'api_dev_key': API_KEY 'api_option': 'paste' 'api_paste_code': source_code 'api_paste_format': 'python'} # sending post request and saving response as response object r = requests.post(url=API_ENDPOINT data=data) # extracting response text pastebin_url = r.text print('The pastebin URL is:%s' % pastebin_url) 

Wichtige Merkmale dieses Codes:

data = {'api_dev_key':API_KEY  
'api_option':'paste'
'api_paste_code':source_code
'api_paste_format':'python'}

Auch hier müssen wir einige Daten an den API-Server übergeben. Wir speichern diese Daten als Wörterbuch.

r = requests.post(url = API_ENDPOINT data = data)

Hier erstellen wir ein Antwortobjekt „r“, das die Anfrage-Antwort speichert. Wir verwenden die Methode request.post(), da wir eine POST-Anfrage senden. Die beiden Argumente, die wir übergeben, sind die URL und das Datenwörterbuch.

pastebin_url = r.text

Als Antwort verarbeitet der Server die an ihn gesendeten Daten und sendet die pastebin_URL Ihres Quellcode auf die einfach zugegriffen werden kann r.text.

Anfragen.Post Die Methode könnte auch für viele andere Aufgaben verwendet werden, wie zum Beispiel das Ausfüllen und Senden der Webformulare, das Posten auf Ihrer FB-Timeline mithilfe der Facebook Graph API usw. 

Hier sind einige wichtige Punkte, über die Sie nachdenken sollten:

  • Wenn die Methode GET ist, werden alle Formulardaten in die URL codiert und an die angehängt Aktion URL als Abfragezeichenfolgenparameter. Mit POST erscheinen die Formulardaten innerhalb des Nachrichtentext der HTTP-Anfrage.
  • Bei der GET-Methode sind die Parameterdaten auf das beschränkt, was wir in die Anforderungszeile (URL) einfügen können. Am sichersten ist es, weniger als 2 KB Parameter zu verwenden. Einige Server verarbeiten bis zu 64 KB. Bei der POST-Methode gibt es kein solches Problem, da wir Daten in senden Nachrichtentext der HTTP-Anfrage, nicht die URL.
  • Für das Senden von Daten in der GET-Methode sind nur ASCII-Zeichen zulässig. Bei der POST-Methode gibt es keine solche Einschränkung.
  • GET ist im Vergleich zu POST weniger sicher, da die gesendeten Daten Teil der URL sind. Daher sollte die GET-Methode nicht zum Senden von Passwörtern oder anderen vertraulichen Informationen verwendet werden.
Quiz erstellen