0Pricing
Lua Academy · Lekcja

Obsługa żądań HTTP w Lua

Proszę uzyskiwać dostęp do nagłówków, treści i argumentów żądania oraz tworzyć odpowiedzi za pomocą API ngx.

Obsługa żądań HTTP w Lua to bezpłatna lekcja Lua Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Lua Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Lua Academy zawiera 4 lekcji w sumie.

Odczytywanie metody i URI żądania

Metodę HTTP i URI można odczytać z przestrzeni nazw ngx.

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

Odczytywanie nagłówków żądania

ngx.req.get_headers() zwraca tabelę nagłówków żądania.

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

Odczytywanie parametrów zapytania

ngx.req.get_uri_args() zwraca tabelę parametrów zapytania 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)

Odczytywanie treści żądania

Treść żądania należy odczytać po jawnym wywołaniu 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
end

Analizowanie treści JSON

Do analizowania treści żądania należy użyć biblioteki JSON (np. cjson).

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

Ustawianie nagłówków odpowiedzi

Nagłówki odpowiedzi należy ustawić za pomocą ngx.header przed wywołaniem ngx.say lub ngx.print.

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

Zapisywanie odpowiedzi

ngx.say(s) zapisuje ciąg znaków i znak nowego wiersza. ngx.print(s) zapisuje dane bez znaku nowego wiersza. ngx.exit(code) kończy żądanie z podanym statusem HTTP.

ngx.status

Kod statusu HTTP należy ustawić za pomocą ngx.status = 404 przed zapisaniem treści odpowiedzi.

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

Przekierowania wewnętrzne

ngx.exec("/other/path") wykonuje wewnętrzne przekierowanie do innego bloku lokalizacji Nginx bez dodatkowego obiegu żądania HTTP.

Podżądania

ngx.location.capture("/api") wysyła podżądanie do innej lokalizacji i zwraca tabelę zawierającą status, nagłówki oraz treść.

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

Udostępnianie kontekstu żądania

ngx.ctx to tabela dostępna w ramach jednego żądania, służąca do udostępniania danych między modułami obsługującymi różne fazy (access → content → log).

Pytanie dotyczące obsługi HTTP

Jaka funkcja odczytuje parametry zapytania URL w OpenResty?

Podsumowanie: obsługa żądań HTTP

Funkcji ngx.req należy używać do odczytywania metody, nagłówków, argumentów zapytania i treści żądania. ngx.header i ngx.status należy ustawić przed zapisaniem odpowiedzi. Do generowania danych wyjściowych służą ngx.say/ngx.print. Dane dostępne w ramach jednego żądania można udostępniać za pomocą ngx.ctx.

Często zadawane pytania

Czy lekcja „Obsługa żądań HTTP w Lua” jest bezpłatna?

Tak — pełny tekst „Obsługa żądań HTTP w Lua” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Lua Academy, przejdź na CoddyKit PRO. Kurs Lua Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Obsługa żądań HTTP w Lua”?

Proszę uzyskiwać dostęp do nagłówków, treści i argumentów żądania oraz tworzyć odpowiedzi za pomocą API ngx. Ćwiczysz Lua Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Lua Academy?

Nie wymagamy żadnego doświadczenia. Lua Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Obsługa żądań HTTP w Lua”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Lua Academy?

Tak. Każda lekcja Lua Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Architektura OpenResty
  2. Obsługa żądań HTTP w Lua
  3. Cosockety i nieblokujący TCP
  4. Słowniki pamięci współdzielonej
← Powrót do Lua Academy