The req
object comes from Rack, and it includes many
helper methods for querying the values of env
. Below
you will find some of its features. To see every option, refer
to Rack's
documentation.
L'objet req
vient de Rack, et inclut beaucoup des
méthodes auxiliaires pour interroger les valeurs de env
.
Ci-dessous vous allez trouver quelques unes de ses fonctionnalités.
Pour voir toutes les options, référez-vous à la documentation
de Rack (en anglais).
You can query the value of REQUEST_METHOD
with these
helpers:
Vous pouvez interroger la valeur REQUEST_METHOD
avec
ces helpers :
# env["REQUEST_METHOD"] == "GET" req.get? # env["REQUEST_METHOD"] == "PUT" req.put? # env["REQUEST_METHOD"] == "POST" req.post? # env["REQUEST_METHOD"] == "PATCH" req.patch? # env["REQUEST_METHOD"] == "DELETE" req.delete? # env["REQUEST_METHOD"] == "HEAD" req.head? # env["REQUEST_METHOD"] == "TRACE" req.trace? # env["REQUEST_METHOD"] == "OPTIONS" req.options?
As the return values are booleans, you can use them with the
on
method.
As the return values are booleans, you can use them with the
on
method.
Access any parameter sent with req.params
:
Accedez à n'importe quel paramètre envoyé avec req.params
:
require "syro" App = Syro.new do get do res.text req.params["foo"] end end env = { "REQUEST_METHOD" => "GET", "PATH_INFO" => "/", "QUERY_STRING" => "foo=bar", "rack.input" => String.new, } p App.call(env)
Output:
Résultat :
[200, {"Content-Length"=>"3", "Content-Type"=>"text/html"}, ["bar"]]
We had to add an extra request header for rack.input
,
otherwise Rack would have complained that it couldn't read it.
When using a webserver and a browser, you won't need to take those
subtleties into account.
Nous avons dû ajouter un entête de requête supplémentaire
pourrack.input
, sinon Rack se serait plaint de ne
pas pouvoir le lire. Lorsqu'on utilise un serveur web et un
navigateur, on n'aura pas besoin de prendre en compte ces subtilités.
Access the cookies with req.cookies
:
Accedez aux cookies avec req.cookies
:
require "syro" App = Syro.new do get do res.text req.cookies["foo"] end end env = { "REQUEST_METHOD" => "GET", "PATH_INFO" => "/", "HTTP_COOKIE" => "foo=bar", } p App.call(env)
Output:
Résultat :
[200, {"Content-Length"=>"3"}, "Content-Type"=>"text/plain"}, ["bar"]]
Refer to Rack's documentation to see what else you can do.
Reportez-vous à Rack's documentation pour voir quoi d'autre vous pouvez faire.