Vai al contenuto
Leo

Libreria

Web pro

Web PRO (client HTTP comodo e server web con rotte).

  • 9 voci
  • 2 voci con esempi eseguiti

Funzioni 8

ottieni_pagina(indirizzo, parametri = nulla, intestazioni = nulla, tempo_massimo = 15)#

Chiede una pagina o dei dati (GET).

Restituisce una risposta_web da leggere con risposta.stato, risposta.testo, risposta.json_risposta, risposta.riuscita. Un codice di errore (404, 500...) NON ferma il programma. parametri finisce nell'indirizzo (?a=1&b=2).

Esempiocontrollato con Leo
variabile r = ottieni_pagina("https://api.esempio.it/cerca", parametri = {"q": "Dante"})

invia_json(indirizzo, dati, intestazioni = nulla, metodo = "POST", tempo_massimo = 15)#

Invia dati come JSON.

dati (un dizionario o una lista) viene inviato come JSON. Con metodo scegli "POST" (predefinito), "PUT", "PATCH" o "DELETE". Restituisce una risposta_web.

Esempiocontrollato con Leo
variabile voti = [7, 8, 6, 9]   # valore di provavariabile r = invia_json("https://api.esempio.it/voti", {"voto": 30})

invia_dati(indirizzo, campi, intestazioni = nulla, metodo = "POST", tempo_massimo = 15)#

Invia un modulo web.

campi è un dizionario inviato come un modulo compilato nel browser (application/x-www-form-urlencoded), non come JSON. Restituisce una risposta_web.

Esempiocontrollato con Leo
invia_dati("https://sito.esempio.it/accesso", {"utente": "aldo", "parola": "..."})

componi_risposta(contenuto = nulla, stato = 200, tipo = nulla, intestazioni = nulla)#

Una risposta su misura.

Si restituisce dalla funzione di una rotta quando vuoi decidere lo stato (per

Esempioeseguito con Leo
funzione gestisci(r) restituisci componi_risposta({"errore": "non trovato"}, stato = 404) fine

crea_server_web(porta = 8080)#

Crea un server web su questo computer, con rotte.

Poi aggiungi le rotte con aggiungi_rotta(server, percorso, funzione) e accendi con avvia_server(server). Ascolta solo su 127.0.0.1 (questo computer). porta = 0 sceglie una porta libera (la leggi da server.indirizzo).

Esempioeseguito con Leo
variabile server = crea_server_web(8080)

aggiungi_rotta(server, percorso, funzione, metodo = "GET")#

Collega una funzione a un percorso.

La funzione riceve la richiesta (metodo, percorso, parametri, corpo, json, intestazioni, variabili, cliente) e restituisce un testo, un dizionario/lista (JSON), un numero oppure componi_risposta(...). Il percorso può avere parti variabili ("/utenti/:id" -> richiesta["variabili"]["id"]) e una parte finale jolly ("/file/*").

Esempiocontrollato con Leo
aggiungi_rotta(server, "/ciao", funzione (richiesta) restituisci "Ciao!" fine)

avvia_server(server, richieste = nulla, secondi = nulla)#

Accende il server e risponde alle richieste.

Resta in ascolto ed esegue la funzione della rotta che combacia con ogni richiesta. Si ferma dopo richieste richieste, dopo secondi secondi, con ferma_server(server) (anche dentro una rotta) o con Ctrl+C. Restituisce quante richieste ha servito. L'indirizzo è in server.indirizzo.

Esempiocontrollato con Leo
avvia_server(server, richieste = 10)

ferma_server(server)#

Spegne il server.

Si può chiamare anche dentro la funzione di una rotta: il server finisce di rispondere a quella richiesta e poi avvia_server termina.

Oggetto «risposta_web»

La risposta a una richiesta web, da leggere con proprietà chiare.

La ottieni da ottieni_pagina, invia_json e invia_dati. Uno stato di errore (404, 500...) NON ferma il programma: controlla riuscita.

ProprietàSignificato
indirizzorisposta.indirizzo: l'indirizzo finale (dopo eventuali reindirizzamenti).
intestazionirisposta.intestazioni: le intestazioni della risposta (un dizionario).
json_rispostarisposta.json_risposta: i dati JSON già trasformati in valori Leo (o nulla).
messaggiorisposta.messaggio: il nome breve dello stato ("Non trovato", "OK"...).
riuscitarisposta.riuscita: vero se lo stato è tra 200 e 299.
spiegazionerisposta.spiegazione: una frase che spiega lo stato.
statorisposta.stato: il codice HTTP (200 = andata bene, 404 = non trovato...).
testorisposta.testo: il contenuto come testo (l'HTML, il testo, il JSON grezzo).
tiporisposta.tipo: il tipo di contenuto (per esempio "application/json").

.solleva_se_errore()#

Ferma il programma con un errore se lo stato non è 2xx.

Comodo quando vuoi che un 404 o un 500 diventi subito un errore invece di controllare risposta.riuscita. Se va tutto bene restituisce la risposta stessa, così puoi concatenare: variabile r = ottieni_pagina(u).solleva_se_errore().

Oggetto «server_web_pro»

Un piccolo server web su questo computer, con rotte per percorso e metodo.

Le richieste arrivano su un thread secondario; la funzione di ogni rotta la esegue però avvia_server sul thread del programma (il codice Leo gira sempre in un solo thread).

ProprietàSignificato
attivoserver.attivo: vero se il server è acceso.
indirizzoserver.indirizzo: l'indirizzo da aprire nel browser (vuoto se spento).
portaserver.porta: la porta su cui ascolta (quella vera, anche se hai chiesto 0).
richieste_serviteserver.richieste_servite: quante richieste ha servito finora.
rotteserver.rotte: l'elenco delle rotte come testi ("GET /utenti/:id").