Gestión de solicitudes HTTP en Lua
Acceda a las cabeceras, el cuerpo y los argumentos de la solicitud, y cree respuestas con la API de ngx.
Gestión de solicitudes HTTP en Lua es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
Lectura del método y la URI de la solicitud
Acceda al método HTTP y a la URI desde el espacio de nombres ngx.
-- content_by_lua_block
local method = ngx.req.get_method()
local uri = ngx.var.uri
ngx.say("Method: " .. method .. ", URI: " .. uri)Lectura de las cabeceras de la solicitud
ngx.req.get_headers() devuelve una tabla con las cabeceras de la solicitud.
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)
endLectura de los parámetros de consulta
ngx.req.get_uri_args() devuelve una tabla con los parámetros de consulta de la 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)Lectura del cuerpo de la solicitud
Lea el cuerpo de la solicitud después de llamar explícitamente a 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
endAnálisis del cuerpo JSON
Utilice una biblioteca JSON, como cjson, para analizar el cuerpo de la solicitud.
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)
endConfiguración de las cabeceras de respuesta
Establezca las cabeceras de respuesta mediante ngx.header antes de llamar a ngx.say o ngx.print.
ngx.header["Content-Type"] = "application/json"
ngx.header["X-Request-ID"] = ngx.var.request_idEscritura de la respuesta
ngx.say(s) escribe una cadena y un salto de línea. ngx.print(s) escribe sin salto de línea. ngx.exit(code) finaliza la solicitud con el código de estado HTTP indicado.
ngx.status
Establezca el código de estado HTTP mediante ngx.status = 404 antes de escribir el cuerpo de la respuesta.
ngx.status = 404
ngx.header["Content-Type"] = "application/json"
ngx.say(cjson.encode({error = "Not Found"}))Redirecciones internas
ngx.exec("/other/path") realiza una redirección interna a otro bloque location de Nginx sin una solicitud HTTP adicional de ida y vuelta.
Subsolicitudes
ngx.location.capture("/api") realiza una subsolicitud a otra ubicación y devuelve una tabla con el estado, las cabeceras y el cuerpo.
local res = ngx.location.capture("/internal/auth")
if res.status ~= 200 then
ngx.exit(403)
endUso compartido del contexto de la solicitud
ngx.ctx es una tabla por solicitud para compartir datos entre distintos controladores de fase (access → content → log).
Pregunta sobre el procesamiento HTTP
¿Qué función lee los parámetros de consulta de la URL en OpenResty?
Resumen: procesamiento de solicitudes HTTP
Utilice las funciones de ngx.req para leer el método, las cabeceras, los parámetros de consulta y el cuerpo. Establezca ngx.header y ngx.status antes de escribir. Utilice ngx.say/ngx.print para la salida. Comparta los datos por solicitud mediante ngx.ctx.
Preguntas frecuentes
¿La lección «Gestión de solicitudes HTTP en Lua» es gratis?
Sí — el texto completo de «Gestión de solicitudes HTTP en Lua» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Gestión de solicitudes HTTP en Lua»?
Acceda a las cabeceras, el cuerpo y los argumentos de la solicitud, y cree respuestas con la API de ngx. Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Gestión de solicitudes HTTP en Lua»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Arquitectura de OpenResty
- Gestión de solicitudes HTTP en Lua
- Cosockets y TCP no bloqueante
- Diccionarios de memoria compartida