Syro

9. The request object

9. La requête objet

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

Request methods

Méthodes de requête

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.

Parameters

Paramètres

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.

Cookies

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.


Prev | Index | Next

Précédent | Sommaire | Suivant