Lua Academy · leksjon

Håndtere HTTP-forespørsler i Lua

Få tilgang til forespørselshoder, brødtekst og argumenter, og utform svar med ngx-API-et.

Leksjon 2 av 413 trinn

Håndtere HTTP-forespørsler i Lua er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lua Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Lese forespørselsmetode og URI

Få tilgang til HTTP-metoden og URI-en fra ngx-navnerommet.

-- content_by_lua_block
local method = ngx.req.get_method()
local uri    = ngx.var.uri
ngx.say("Method: " .. method .. ", URI: " .. uri)

Lese foresørselshoder

ngx.req.get_headers() returnerer en tabell med forespørselshoder.

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

Lese spørringsparametere

ngx.req.get_uri_args() returnerer en tabell med URL-spørringsparametere.

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)

Lese forespørselsbody

Les forespørselsbodyen etter at ngx.req.read_body() er kalt eksplisitt.

ngx.req.read_body()
local body = ngx.req.get_body_data()
if not body then
  ngx.status = 400
  ngx.say("Empty body")
  return
end

Parse JSON-body

Bruk et JSON-bibliotek (for eksempel cjson) til å parse forespørselsbodyen.

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

Angi responseheadere

Angi responseheadere via ngx.header før ngx.say eller ngx.print kalles.

ngx.header["Content-Type"] = "application/json"
ngx.header["X-Request-ID"] = ngx.var.request_id

Skrive responsen

ngx.say(s) skriver en streng og et linjeskift. ngx.print(s) skriver uten linjeskift. ngx.exit(code) avslutter forespørselen med den angitte HTTP-statusen.

ngx.status

Angi HTTP-statuskoden via ngx.status = 404 før responsbodyen skrives.

ngx.status = 404
ngx.header["Content-Type"] = "application/json"
ngx.say(cjson.encode({error = "Not Found"}))

Interne omdirigeringer

ngx.exec("/other/path") utfører en intern omdirigering til en annen Nginx-location-blokk uten en ekstra HTTP-rundtur.

Underforespørsler

ngx.location.capture("/api") utfører en underforespørsel til en annen location og returnerer en tabell med status, headere og body.

local res = ngx.location.capture("/internal/auth")
if res.status ~= 200 then
  ngx.exit(403)
end

Deling av forespørselskontekst

ngx.ctx er en tabell per forespørsel for deling av data mellom ulike fasebehandlere (access → content → log).

Spørsmål om HTTP-håndtering

Hvilken funksjon leser URL-spørringsparametere i OpenResty?

Oppsummering: Håndtering av HTTP-forespørsler

Bruk ngx.req-funksjoner til å lese metode, headere, spørringsargumenter og body. Angi ngx.header og ngx.status før skriving. Bruk ngx.say/ngx.print til å skrive ut data. Del data per forespørsel via ngx.ctx.

Gratis å komme i gang

Lær deg Lua med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
40
Leksjoner
159

Ofte stilte spørsmål

Er leksjonen «Håndtere HTTP-forespørsler i Lua» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «Håndtere HTTP-forespørsler i Lua», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Håndtere HTTP-forespørsler i Lua»?

Få tilgang til forespørselshoder, brødtekst og argumenter, og utform svar med ngx-API-et. Du øver på Lua Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Lua Academy?

Ingen tidligere erfaring er nødvendig. Lua Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Håndtere HTTP-forespørsler i Lua»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Lua Academy-leksjonen?

Ja. Alle Lua Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. OpenResty-arkitektur
  2. Håndtere HTTP-forespørsler i Lua
  3. Cosockets og ikke-blokkerende TCP
  4. Delte minneordbøker
← Tilbake til Lua Academy