0Pricing
Lua Academy · Leçon

Gérer les requêtes HTTP en Lua

Accédez aux en-têtes, au corps et aux arguments des requêtes, puis créez des réponses avec l’API ngx.

Gérer les requêtes HTTP en Lua est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.

Lecture de la méthode et de l’URI de la requête

Accédez à la méthode HTTP et à l’URI depuis l’espace de noms ngx.

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

Lecture des en-têtes de la requête

ngx.req.get_headers() renvoie une table contenant les en-têtes de la requête.

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

Lecture des paramètres de requête

ngx.req.get_uri_args() renvoie une table contenant les paramètres de requête de l’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)

Lecture du corps de la requête

Lisez le corps de la requête après avoir appelé explicitement 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

Analyse du corps JSON

Utilisez une bibliothèque JSON (par exemple, cjson) pour analyser le corps de la requête.

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

Définition des en-têtes de réponse

Définissez les en-têtes de réponse via ngx.header avant d’appeler ngx.say ou ngx.print.

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

Écriture de la réponse

ngx.say(s) écrit une chaîne suivie d’un saut de ligne. ngx.print(s) écrit la chaîne sans saut de ligne. ngx.exit(code) termine la requête avec le code d’état HTTP indiqué.

ngx.status

Définissez le code d’état HTTP via ngx.status = 404 avant d’écrire le corps de la réponse.

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

Redirections internes

ngx.exec("/other/path") effectue une redirection interne vers un autre bloc d’emplacement Nginx sans effectuer de requête HTTP supplémentaire.

Sous-requêtes

ngx.location.capture("/api") effectue une sous-requête vers un autre emplacement et renvoie une table contenant l’état, les en-têtes et le corps.

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

Partage du contexte de la requête

ngx.ctx est une table propre à chaque requête qui permet de partager des données entre différents gestionnaires de phase (access → content → log).

Question sur la gestion HTTP

Quelle fonction lit les paramètres de requête de l’URL dans OpenResty ?

Récapitulatif : gestion des requêtes HTTP

Utilisez les fonctions ngx.req pour lire la méthode, les en-têtes, les paramètres de requête et le corps. Définissez ngx.header et ngx.status avant l’écriture. Utilisez ngx.say/ngx.print pour produire la sortie. Partagez les données propres à la requête via ngx.ctx.

Questions Fréquemment Posées

La leçon « Gérer les requêtes HTTP en Lua » est-elle gratuite ?

Oui — le texte complet de « Gérer les requêtes HTTP en Lua » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Gérer les requêtes HTTP en Lua » ?

Accédez aux en-têtes, au corps et aux arguments des requêtes, puis créez des réponses avec l’API ngx. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Lua Academy ?

Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Gérer les requêtes HTTP en Lua » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?

Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Architecture d’OpenResty
  2. Gérer les requêtes HTTP en Lua
  3. Cosockets et TCP non bloquant
  4. Dictionnaires de mémoire partagée
← Retour à Lua Academy