Menangani Permintaan HTTP dalam Lua
Akses header, isi, dan argumen permintaan, lalu susun respons dengan API ngx.
Menangani Permintaan HTTP dalam Lua adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Membaca Metode dan URI Permintaan
Akses metode HTTP dan URI dari namespace ngx.
-- content_by_lua_block
local method = ngx.req.get_method()
local uri = ngx.var.uri
ngx.say("Method: " .. method .. ", URI: " .. uri)Membaca Header Permintaan
ngx.req.get_headers() mengembalikan tabel header permintaan.
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)
endMembaca Parameter Kueri
ngx.req.get_uri_args() mengembalikan tabel parameter kueri 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)Membaca Isi Permintaan
Baca isi permintaan setelah memanggil ngx.req.read_body() secara eksplisit.
ngx.req.read_body()
local body = ngx.req.get_body_data()
if not body then
ngx.status = 400
ngx.say("Empty body")
return
endMengurai Isi JSON
Gunakan pustaka JSON, misalnya cjson, untuk mengurai isi permintaan.
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)
endMengatur Header Respons
Atur header respons melalui ngx.header sebelum memanggil ngx.say atau ngx.print.
ngx.header["Content-Type"] = "application/json"
ngx.header["X-Request-ID"] = ngx.var.request_idMenulis Respons
ngx.say(s) menulis string dan baris baru. ngx.print(s) menulis tanpa baris baru. ngx.exit(code) mengakhiri permintaan dengan status HTTP yang diberikan.
ngx.status
Atur kode status HTTP melalui ngx.status = 404 sebelum menulis isi respons.
ngx.status = 404
ngx.header["Content-Type"] = "application/json"
ngx.say(cjson.encode({error = "Not Found"}))Pengalihan Internal
ngx.exec("/other/path") melakukan pengalihan internal ke blok lokasi Nginx lain tanpa perjalanan bolak-balik HTTP tambahan.
Subpermintaan
ngx.location.capture("/api") membuat subpermintaan ke lokasi lain dan mengembalikan tabel yang berisi status, header, dan isi.
local res = ngx.location.capture("/internal/auth")
if res.status ~= 200 then
ngx.exit(403)
endBerbagi Konteks Permintaan
ngx.ctx adalah tabel per permintaan untuk berbagi data antara penangan fase yang berbeda (akses → konten → log).
Pertanyaan tentang Penanganan HTTP
Fungsi apa yang membaca parameter kueri URL di OpenResty?
Ringkasan: Menangani Permintaan HTTP
Gunakan fungsi ngx.req untuk membaca metode, header, argumen kueri, dan isi. Atur ngx.header dan ngx.status sebelum menulis. Gunakan ngx.say/ngx.print untuk keluaran. Bagikan data per permintaan melalui ngx.ctx.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menangani Permintaan HTTP dalam Lua” gratis?
Ya — teks lengkap “Menangani Permintaan HTTP dalam Lua” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menangani Permintaan HTTP dalam Lua”?
Akses header, isi, dan argumen permintaan, lalu susun respons dengan API ngx. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Menangani Permintaan HTTP dalam Lua” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Arsitektur OpenResty
- Menangani Permintaan HTTP dalam Lua
- Cosocket dan TCP Non-Pemblokiran
- Kamus Memori Bersama