GET og POST forespørsler ved hjelp av Python

GET og POST forespørsler ved hjelp av Python

Dette innlegget diskuterer to HTTP (Hypertext Transfer Protocol)-forespørselsmetoder  GET- og POST-forespørsler i Python og deres implementering i Python. 

Hva er HTTP?  

HTTP er et sett med protokoller designet for å muliggjøre kommunikasjon mellom klienter og servere. Den fungerer som en forespørsel-svar-protokoll mellom en klient og en server. En nettleser kan være klienten og en applikasjon på en datamaskin som er vert for et nettsted kan være serveren. Så for å be om et svar fra serveren er det hovedsakelig to metoder:

  1. BLI : For å be om data fra serveren.
  2. STOLPE : For å sende inn data som skal behandles til serveren.

Her er et enkelt diagram som forklarer det grunnleggende konseptet med GET- og POST-metoder.

GET og POST-forespørsler ved hjelp av Python 

 Nå for å gjøre HTTP-forespørsler inn Python vi kan bruke flere HTTP-biblioteker som:

Det mest elegante og enkleste av bibliotekene ovenfor er forespørsler. Vi vil bruke forespørselsbiblioteket i denne artikkelen. For å laste ned og installere Requests-biblioteket, bruk følgende kommando:

 pip install requests  

Foreta en Get-forespørsel

Eksemplet ovenfor finner lengdegrad og formatert adresse til et gitt sted ved å sende en GET-forespørsel til Google Maps API. An API (Application Programming Interface) gir deg tilgang til de interne funksjonene til et program på en begrenset måte. Og i de fleste tilfeller er dataene som er oppgitt i JSON (JavaScript Object Notation) format (som er implementert som ordbokobjekter i Python!).

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

Produksjon:

GET og POST forespørsler ved hjelp av Python

Viktige poeng å konkludere:

 PARAMS = {'address':location}  

URL-en for en GET-forespørsel har vanligvis noen parametere. For forespørslene kan bibliotekparametere defineres som en ordbok. Disse parameterne blir senere analysert og lagt til i basis-URLen eller API-endepunktet. For å forstå rollen til parameteren prøv å skrive ut r.url etter at responsobjektet er opprettet. Du vil se noe slikt:

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

Dette er den faktiske URL-en som GET-forespørselen er laget på

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

Her lager vi et svarobjekt 'r' som vil lagre forespørsel-svaret. Vi bruker requests.get()-metoden siden vi sender en GET-forespørsel. De to argumentene vi sender er URL og parameterordboken.

 data = r.json()  

Nå for å hente dataene fra responsobjektet må vi konvertere råresponsinnholdet til en JSON-type datastruktur. Dette oppnås ved å bruke json()-metoden. Til slutt trekker vi ut den nødvendige informasjonen ved å analysere JSON-objektet.

Gir en POST-forespørsel

Dette eksemplet forklarer hvordan du limer inn kildekode til pastebin.com ved å sende en POST-forespørsel til PASTEBIN API. Først av alt må du generere en API-nøkkel ved å påmelding her og deretter få tilgang til din API-nøkkel her.  

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  )   

Viktige funksjoner i denne koden:

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

Her må vi igjen sende noen data til API-serveren. Vi lagrer disse dataene som en ordbok.

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

Her lager vi et svarobjekt 'r' som vil lagre forespørsel-svaret. Vi bruker requests.post()-metoden siden vi sender en POST-forespørsel. De to argumentene vi sender er URL-en og dataordboken.

 pastebin_url = r.text  

Som svar behandler serveren dataene som sendes til den og sender pastebin_URL til din kildekode som enkelt kan nås av r.tekst.

requests.post metoden kan brukes til mange andre oppgaver, så vel som å fylle ut og sende inn nettskjemaene som legges ut på FB-tidslinjen din ved å bruke Facebook Graph API osv. 

Her er noen viktige punkter å tenke på:

  • Når metoden er GET, blir alle skjemadata kodet inn i URL-en og lagt til handling URL som søkestrengparametere. Med POST-skjemaet vises data i meldingstekst av HTTP-forespørselen.
  • I GET-metoden er parameterdataene begrenset til det vi kan legge inn i forespørselslinjen (URL). Tryggest å bruke mindre enn 2K med parametere, noen servere håndterer opptil 64K. Ikke noe slikt problem i POST-metoden siden vi sender data i meldingstekst av HTTP-forespørselen ikke URL-en.
  • Kun ASCII-tegn er tillatt for data som skal sendes i GET-metoden. Det er ingen slik begrensning i POST-metoden.
  • GET er mindre sikkert sammenlignet med POST fordi dataene som sendes er en del av URL-en. Så GET-metoden bør ikke brukes når du sender passord eller annen sensitiv informasjon.
Lag quiz