HANKI- ja POST-pyynnöt Pythonilla

HANKI- ja POST-pyynnöt Pythonilla

Tämä viesti käsittelee kahta HTTP (Hypertext Transfer Protocol) -pyyntömenetelmää, GET- ja POST-pyyntöjä Pythonissa ja niiden toteutusta Pythonissa. 

Mikä on HTTP?  

HTTP on joukko protokollia, jotka on suunniteltu mahdollistamaan viestinnän asiakkaiden ja palvelimien välillä. Se toimii pyyntö-vastausprotokollana asiakkaan ja palvelimen välillä. Web-selain voi olla asiakas ja sovellus tietokoneessa, joka isännöi verkkosivustoa, voi olla palvelin. Joten vastauksen pyytämiseen palvelimelta on pääasiassa kaksi tapaa:

  1. SAADA : Pyydä tietoja palvelimelta.
  2. LÄHETTÄÄ : Lähettääksesi palvelimelle käsiteltävät tiedot.

Tässä on yksinkertainen kaavio, joka selittää GET- ja POST-menetelmien peruskäsitteen.

HANKI- ja POST-pyynnöt Pythonilla 

 Nyt voit tehdä HTTP-pyyntöjä Python voimme käyttää useita HTTP-kirjastoja, kuten:

Tyylikkäin ja yksinkertaisin yllä luetelluista kirjastoista on Requests. Käytämme tämän artikkelin pyyntökirjastoa. Voit ladata ja asentaa Requests-kirjaston käyttämällä seuraavaa komentoa:

 pip install requests  

Hanki-pyynnön tekeminen

Yllä oleva esimerkki löytää tietyn sijainnin leveysasteen pituusasteen ja muotoillun osoitteen lähettämällä GET-pyynnön Google Maps -sovellusliittymälle. An API (Application Programming Interface) -sovelluksen avulla voit käyttää ohjelman sisäisiä ominaisuuksia rajoitetusti. Ja useimmissa tapauksissa annetut tiedot ovat mukana JSON (JavaScript Object Notation) muodossa (joka on toteutettu Pythonissa sanakirjaobjekteina!).

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  ))   

Lähtö:

HANKI- ja POST-pyynnöt Pythonilla

Tärkeitä päätelmiä:

 PARAMS = {'address':location}  

GET-pyynnön URL-osoite sisältää yleensä joitain parametreja. Pyyntöjä varten kirjaston parametrit voidaan määritellä sanakirjaksi. Nämä parametrit jäsennetään myöhemmin ja lisätään perus-URL-osoitteeseen tai API-päätepisteeseen. Ymmärtääksesi parametrin roolin, yritä tulostaa r.url sen jälkeen, kun vastausobjekti on luotu. Näet jotain tällaista:

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

Tämä on todellinen URL-osoite, johon GET-pyyntö tehdään

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

Täällä luomme vastausobjektin 'r', joka tallentaa pyyntö-vastauksen. Käytämme requests.get()-menetelmää, koska lähetämme GET-pyynnön. Välittämämme kaksi argumenttia ovat URL ja parametrien sanakirja.

 data = r.json()  

Nyt tietojen hakemiseksi vastausobjektista meidän on muutettava raakavastauksen sisältö JSON-tyyppiseksi tietorakenteeksi. Tämä saavutetaan käyttämällä json()-menetelmää. Lopuksi puramme tarvittavat tiedot jäsentämällä JSON-tyyppisen objektin.

POST-pyynnön tekeminen

Tämä esimerkki selittää, kuinka voit liittää lähdekoodi to pastebin.com lähettämällä POST-pyynnön PASTEBIN API:lle. Ensinnäkin sinun on luotava API-avain ilmoittautuminen tänne ja pääset sitten käsiksi omaan API-avain tässä.  

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  )   

Tämän koodin tärkeitä ominaisuuksia:

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

Tässäkin meidän on välitettävä joitakin tietoja API-palvelimelle. Tallennamme nämä tiedot sanakirjana.

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

Täällä luomme vastausobjektin 'r', joka tallentaa pyyntö-vastauksen. Käytämme requests.post() -menetelmää, koska lähetämme POST-pyynnön. Välittämämme kaksi argumenttia ovat URL-osoite ja tietosanakirja.

 pastebin_url = r.text  

Vastauksena palvelin käsittelee sille lähetetyt tiedot ja lähettää sinun pastebin_URL-osoitteen lähdekoodi johon pääsee yksinkertaisesti käsiksi r.text.

requests.post menetelmää voidaan käyttää moniin muihin tehtäviin, kuten FB-aikajanallasi olevien verkkolomakkeiden täyttämiseen ja lähettämiseen Facebook Graph API:n avulla jne. 

Tässä on joitain tärkeitä asioita pohdittavaksi:

  • Kun menetelmä on GET, kaikki lomaketiedot koodataan URL-osoitteeseen ja liitetään osoitteeseen toimintaa URL-osoite kyselymerkkijonoparametreina. POST-lomakkeella tiedot näkyvät sisällä viestin runko HTTP-pyynnöstä.
  • GET-menetelmässä parametritiedot on rajoitettu siihen, mitä voimme täyttää pyyntöriville (URL). Turvallisinta käyttää alle 2 000 parametria, jotkut palvelimet käsittelevät jopa 64 000 parametria. Ei tällaista ongelmaa POST-menetelmässä, koska lähetämme tietoja viestin runko HTTP-pyynnöstä, ei URL-osoitteesta.
  • Vain ASCII-merkit ovat sallittuja datassa, joka lähetetään GET-menetelmällä. POST-menetelmässä ei ole tällaista rajoitusta.
  • GET on vähemmän turvallinen kuin POST, koska lähetetyt tiedot ovat osa URL-osoitetta. Joten GET-menetelmää ei tule käyttää salasanoja tai muita arkaluonteisia tietoja lähetettäessä.
Luo tietokilpailu