Kérések beszerzése és továbbítása Python használatával

Kérések beszerzése és továbbítása Python használatával

Ez a bejegyzés két HTTP (Hypertext Transfer Protocol) kérési módszert tárgyal, a GET és POST kéréseket a Pythonban, valamint ezek megvalósítását Pythonban. 

Mi az a HTTP?  

A HTTP protokollok halmaza, amely lehetővé teszi az ügyfelek és a szerverek közötti kommunikációt. Kérelem-válasz protokollként működik a kliens és a szerver között. A webböngésző lehet a kliens, a szerver pedig egy webhelyet tároló számítógépen lévő alkalmazás. Tehát a szervertől való válasz kérésére alapvetően két módszer létezik:

  1. KAP : Adatok kérése a szervertől.
  2. POST : Feldolgozandó adatok elküldése a szerverre.

Íme egy egyszerű diagram, amely elmagyarázza a GET és POST metódusok alapfogalmát.

GET és POST kérések Python használatával 

 Most HTTP kéréseket kell beküldeni Piton többféle HTTP-könyvtárat használhatunk, például:

A fent felsorolt ​​könyvtárak közül a legelegánsabb és legegyszerűbb a Requests. Ebben a cikkben a kérések könyvtárát fogjuk használni. A Requests könyvtár letöltéséhez és telepítéséhez használja a következő parancsot:

 pip install requests  

Get kérés benyújtása

A fenti példa megkeresi egy adott hely szélességi és hosszúsági fokát és formázott címét úgy, hogy GET kérést küld a Google Maps API-nak. An API (Application Programming Interface) lehetővé teszi a programok belső funkcióinak korlátozott elérését. És a legtöbb esetben a megadott adatok benne vannak JSON (JavaScript objektumjelölés) formátumban (amely a Pythonban szótárobjektumként van megvalósítva!).

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:  %s  n  Longitude:  %s  n  Formatted Address:  %s  '   %  (  latitude     longitude    formatted_address  ))   

Kimenet:

Kérések beszerzése és közzététele Python használatával

Fontos következtetések:

 PARAMS = {'address':location}  

A GET-kérés URL-címe általában tartalmaz néhány paramétert. A kérésekhez a könyvtár paraméterei szótárként definiálhatók. Ezeket a paramétereket a rendszer később elemzi, és hozzáadja az alap URL-hez vagy az API-végponthoz. A paraméter szerepének megértéséhez próbáljon kinyomtatni r.url a válaszobjektum létrehozása után. Valami ilyesmit fog látni:

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

Ez az a tényleges URL, amelyen a GET kérés érkezik

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

Itt létrehozunk egy „r” válaszobjektumot, amely tárolja a kérés-választ. A requests.get() metódust használjuk, mivel GET kérést küldünk. A két átadott argumentum az URL és a paraméterszótár.

 data = r.json()  

Most az adatok lekéréséhez a válaszobjektumból a nyers választartalmat JSON-típusú adatstruktúrává kell konvertálnunk. Ez a json() metódus használatával érhető el. Végül kivonjuk a szükséges információkat a JSON-típusú objektum elemzésével.

POST kérés készítése

Ez a példa elmagyarázza, hogyan kell beilleszteni forráskód hogy pastebin.com POST kérés elküldésével a PASTEBIN API-nak. Először is létre kell hoznia egy API-kulcsot itt iratkozz fel majd hozzáfér a saját API kulcs itt.  

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  )   

A kód fontosabb jellemzői:

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

Itt ismét át kell adnunk néhány adatot az API-kiszolgálónak. Ezeket az adatokat szótárként tároljuk.

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

Itt létrehozunk egy „r” válaszobjektumot, amely tárolja a kérés-választ. A requests.post() metódust használjuk, mivel POST kérést küldünk. A két átadott argumentum az URL és az adatszótár.

 pastebin_url = r.text  

Válaszul a szerver feldolgozza a neki küldött adatokat, és elküldi az Ön pastebin_URL-jét forráskód amelyhez egyszerűen hozzá lehet férni r.text.

kérések.bejegyzés A módszer számos más feladatra is használható, mint például az FB idővonalán közzétett webes űrlapok kitöltése és beküldése a Facebook Graph API segítségével stb. 

Íme néhány fontos szempont, amelyeken érdemes elgondolkodni:

  • Ha a metódus GET, az összes űrlapadat az URL-be van kódolva, és hozzáfűződik a akció URL lekérdezési karakterlánc-paraméterként. A POST űrlapon belül az adatok jelennek meg üzenet törzse a HTTP-kéréstől.
  • A GET metódusban a paraméteradatok csak arra korlátozódnak, amit a kéréssorba (URL) tudunk betolni. A legbiztonságosabb, ha 2K-nál kevesebb paramétert használunk, egyes szerverek akár 64K-t is kezelnek. Nincs ilyen probléma a POST metódusban, mivel adatokat küldünk a üzenet törzse a HTTP-kérés, nem az URL-cím.
  • Csak ASCII-karakterek engedélyezettek a GET metódusban elküldött adatokhoz. A POST metódusban nincs ilyen korlátozás.
  • A GET kevésbé biztonságos a POST-hoz képest, mivel a küldött adatok az URL részét képezik. Tehát a GET módszert nem szabad jelszavak vagy más érzékeny információk küldésekor használni.
Kvíz létrehozása