0Pricing
Lua Academy · Lección

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

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

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

Configuració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_id

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

Uso 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

  1. Arquitectura de OpenResty
  2. Gestión de solicitudes HTTP en Lua
  3. Cosockets y TCP no bloqueante
  4. Diccionarios de memoria compartida
← Volver a Lua Academy