Las rutas son especificadas para cada componente basado en el archivo config/routes.rb
. Las rutas simplemente son mapeadas desde el URL hacia los params.
client "/todos", {view: 'todos'}
Las rutas toman dos argumentos: un path y un hash con párametros. Cuando un URL es cargado y el path hace match con una ruta, los parámetros de esta seran aquellos provistos para esa ruta. El hash de los params actuan como un constraint, por ejemplo, un hash vacío hara match con cualquier url. Todos los parámetros que no concuerden con el archivo de rutas serán colocados en los parametros query.
Cuando los parámetros son cambiados, el URL se cambiará al path con la ruta que tenga los mismos parámetros.
Los paths de las rutas también pueden estar enlazados (binding), el cual se mapeará en los params
client "/todos/{{ index }}", view: 'todos'
En el caso anterior, si cualquier URL hace match con /todos/**, (donde * puede ser cualquier caracter, excepto slash), este activará la ruta. En este caso el valor de params._view
sera 'todos' y si el valor de params._index
esta presente, este hará match con la ruta.
Las rutas son revisadas desde arriba hacia abajo en el archivo de rutas.
Para configurar endpoints HTTP por medio de Controladores HTTP debes especificar la ruta con las palabras claves get
, post
, put
, patch
o delete
. Las rutas para endpoints HTTP requieren que configures el controlador y la acción como parámetros de la ruta.
get "/api/todos", controller: 'todos', action: 'index'
El código anterior llamara al método index
en el controlador TodosController. Mira Controladores HTTP para mas detalles.
Para crear un API REST tienes que crear las siguientes rutas
get "/api/todos", controller: 'todos', action: 'index'
post "/api/todos", controller: 'todos', action: 'create'
get "/api/todos/{{ id }}", controller: 'todos', action: 'show'
put "/api/todos/{{ id }}", controller: 'todos', action: 'update'
patch "/api/todos/{{ id }}", controller: 'todos', action: 'update'
delete "/api/todos/{{ id }}", controller: 'todos', action: 'destroy'
Todos los parametros adicionales son pasados hacia el controlador
delete "/api/todos/{{ id }}", controller: 'todos', action: 'destroy', safe: true
El código anterior hará que id
, controller
, action
y safe
estén disponibles en el controlador por medio del hash de params.
Puedes sobreescribir el método HTTP actual proveyendo el método por medio de HTTP GET o parámetros POST