Restful Routing and restful versus non-restful routes

So resources :products will create 7 different restful routes for CRUD
operations for resource products.
For example: products GET /products(.:format) products#index

So restful route includes only controller name within itself and :id for
operation like edit, show, update, delete.
When i create non-restful routes in rails for example: get
‘:controller/:action/:id’ i only can see difference that i
mustexplicitly write
:action, so that “:action” makes this route non-restful?

So as i get this, first requirement for route(URL) to be restful is
that
route can’t contain action name?
Question 1

Second requirement for route to be restful is that action corresponding
to
route must “play by restful rules” in another word,
for example a GET should not leave side-effects on the server, but just
retrieve data.
So if i have /products(.:format) products#index and within index action
i
saved something into DB, than above route is just looks like restful
route
but in fact it isn’t
? Question 2

I know that i can pass to restful route additional parameters, for
example:
link_to “Show”, products_path(id: 5, a: “aaaa”, b: “bbbb”) so now URL
is:
products/5?a=aaaa&b=bbbb.
So am i violating restful here, or this route is still restful?
Question 3

To me seems that i don’t need non-restful routes at all, when i can
make
a bunch of restful routes with construct like following?(and other
similar
construct)
Question 4

resources :products do
member do
get ‘preview’
endend

Please don’t redirect me to Rails Routing from the Outside In — Ruby on Rails Guides i
read it multiple times :slight_smile:

On 18 November 2013 09:29, Srdjan C. [email protected] wrote:

[snip]
Question 1

Second requirement for route to be restful is that action corresponding to
route must “play by restful rules” in another word,
for example a GET should not leave side-effects on the server, but just
retrieve data.
So if i have /products(.:format) products#index and within index action i
saved something into DB, than above route is just looks like restful route
but in fact it isn’t?

Whether it is restful or not is not relevant as you should not do
this. Imagine, for example, the havoc caused when google interrogates
all the GET routes in your application.

Question 2

I know that i can pass to restful route additional parameters, for example:
link_to “Show”, products_path(id: 5, a: “aaaa”, b: “bbbb”) so now URL is:
products/5?a=aaaa&b=bbbb.
So am i violating restful here, or this route is still restful?

It is still restful.

end
end

So what is the question you are asking? If the restful routes fit
your needs then use them, if they don’t then use other routes.

Colin