Rutas
En Sinatra las rutas se definen utilizando el verbo (en minúscula) seguido del path y recibe un bloque de Ruby con el código que se quiere ejecutar cuando una petición coincide con el verbo y el path.
Desafortunadamente, desde los navegadores solo podemos realizar peticiones de tipo GET
y POST
(formularios).
Para realizar peticiones con PUT
, PATCH
, DELETE
, etc. podemos utilizar curl, Postman o algún lenguaje de programación (como Ruby!).
La primera ruta que coincide con la petición es la que se ejecuta.
Las rutas que tienen un slash al final son diferentes de las que no lo tienen:
Escribiendo el cuerpo, código de respuesta y los encabezados
Lo que retornes en cada ruta se va a convertir en el mensaje HTTP de respuesta. Puedes devolver:
Un string que se va a convertir en el cuerpo de la respuesta.
Un número con el código de respuesta (200, 404, etc.)
Un arreglo con dos elementos: el código de respuesta y el cuerpo de la respuesta.
Un arreglo con tres elementos: el código de respuesta, un hash con los encabezados y el cuerpo de la respuesta.
Si retornas sólo un string el código de respuesta es 200 OK.
También existen los métodos body
, status
y headers
que te permiten escribir el cuerpo, código de respuesta y los encabezados respectivamente, pero lo que se recomienda es definir esta información en lo que retorne el bloque.
El siguiente ejemplo:
Es equivalente a:
Query string
El query string es el conjunto de propiedades que van después del signo de interrogación (?
) de un URL. Sinatra automáticamente convierte las propiedades en el hash params
.
Por ejemplo, si quieres obtener el valor de una propiedad llamada name
utilizarías params[:name]
:
Los valores siempre se retornan como cadenas de texto. Si esperas un número debes convertirlo manualmente. Por ejemplo:
Variables de path
Puedes utilizar variables en las rutas que puedes obtener a través del hash params
:
El objeto request
En tu código puedes utilizar el objeto request
para acceder a toda la información de la petición HTTP:
Nota: Si deseas obtener el valor de otro encabezado tienes que utilizar el objeto env
, pasar el encabezado a mayúscula y agregarle el prefijo HTTP_
. Por ejemplo:
Last updated