Gestione delle richieste HTTP in Lua
Acceda agli header, al body e agli argomenti della richiesta e crei risposte con l'API ngx.
Gestione delle richieste HTTP in Lua è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.
Lettura del metodo e dell'URI della richiesta
Acceda al metodo HTTP e all'URI dal namespace ngx.
-- content_by_lua_block
local method = ngx.req.get_method()
local uri = ngx.var.uri
ngx.say("Method: " .. method .. ", URI: " .. uri)Lettura degli header della richiesta
ngx.req.get_headers() restituisce una tabella degli header della richiesta.
local headers = ngx.req.get_headers()
local auth = headers["Authorization"]
if not auth then
ngx.status = 401
ngx.say("Unauthorized")
ngx.exit(ngx.HTTP_UNAUTHORIZED)
endLettura dei parametri di query
ngx.req.get_uri_args() restituisce una tabella dei parametri di query dell'URL.
local args = ngx.req.get_uri_args()
local page = tonumber(args.page) or 1
local size = tonumber(args.size) or 20
ngx.say("Page: " .. page .. ", Size: " .. size)Lettura del corpo della richiesta
Legga il corpo della richiesta dopo aver chiamato esplicitamente ngx.req.read_body().
ngx.req.read_body()
local body = ngx.req.get_body_data()
if not body then
ngx.status = 400
ngx.say("Empty body")
return
endAnalisi del corpo JSON
Utilizzi una libreria JSON (ad es., cjson) per analizzare il corpo della richiesta.
local cjson = require("cjson")
ngx.req.read_body()
local body = ngx.req.get_body_data()
local ok, data = pcall(cjson.decode, body)
if not ok then
ngx.status = 400
ngx.say("Invalid JSON")
return ngx.exit(400)
endImpostazione degli header della risposta
Imposti gli header della risposta tramite ngx.header prima di chiamare ngx.say o ngx.print.
ngx.header["Content-Type"] = "application/json"
ngx.header["X-Request-ID"] = ngx.var.request_idScrittura della risposta
ngx.say(s) scrive una stringa e un carattere di nuova riga. ngx.print(s) scrive senza una nuova riga. ngx.exit(code) termina la richiesta con il codice di stato HTTP specificato.
ngx.status
Imposti il codice di stato HTTP tramite ngx.status = 404 prima di scrivere il corpo della risposta.
ngx.status = 404
ngx.header["Content-Type"] = "application/json"
ngx.say(cjson.encode({error = "Not Found"}))Reindirizzamenti interni
ngx.exec("/other/path") esegue un reindirizzamento interno verso un altro blocco location di Nginx senza un ulteriore round trip HTTP.
Sottorichieste
ngx.location.capture("/api") esegue una sottorichiesta verso un'altra location e restituisce una tabella con stato, header e corpo.
local res = ngx.location.capture("/internal/auth")
if res.status ~= 200 then
ngx.exit(403)
endCondivisione del contesto della richiesta
ngx.ctx è una tabella per singola richiesta che consente di condividere dati tra diversi gestori di fase (access → content → log).
Domanda sulla gestione HTTP
Quale funzione legge i parametri di query dell'URL in OpenResty?
Riepilogo: gestione delle richieste HTTP
Utilizzi le funzioni ngx.req per leggere metodo, header, argomenti di query e corpo. Imposti ngx.header e ngx.status prima di scrivere. Utilizzi ngx.say/ngx.print per l'output. Condivida i dati per singola richiesta tramite ngx.ctx.
Domande Frequenti
La lezione «Gestione delle richieste HTTP in Lua» è gratuita?
Sì — il testo completo di «Gestione delle richieste HTTP in Lua» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.
Cosa imparerò in «Gestione delle richieste HTTP in Lua»?
Acceda agli header, al body e agli argomenti della richiesta e crei risposte con l'API ngx. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Lua Academy?
Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Gestione delle richieste HTTP in Lua»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Lua Academy?
Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Architettura di OpenResty
- Gestione delle richieste HTTP in Lua
- Cosocket e TCP non bloccante
- Dizionari in memoria condivisa