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)
endLecture 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
endAnalyse 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)
endDé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)
endPartage 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
- Architecture d’OpenResty
- Gérer les requêtes HTTP en Lua
- Cosockets et TCP non bloquant
- Dictionnaires de mémoire partagée