Webove MVC - jak správně provázat Routes a Controllery u RESTu

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Webove MVC - jak správně provázat Routes a Controllery u RESTu
« Odpověď #15 kdy: 29. 03. 2018, 14:38:57 »
jenže když máte například získat všehny posty daného usera, uri může vypadat nějak takhle "GET xxx/users/:userID/posts", jakej controller na to z výše vyjmenovaných zavoláte? Ha? Žádnej - protože žádnej z výše uvedených tohle nedokáže zpracovat.

můžete udělat novej controller kterej bude pracovat s novým parametrem v URI, JENŽE bude tento controller z modelu User? (jasně, uri začíná "/users/:userID tak User) A NEBO ten controller bude z modelu POST, protože přece ta resource která se vrací je jen seznam vyfiltrovaných postů - a nebo uděláte úplně novej model? HA? (schválně neodpovím)

Tazateli jsem na toto odpověděl hned na začátku.
"GET xxx/users/:userID/posts" zpracovává user_controller::action_get_posts není potřeba na to vytvářet žádný nový kontroller ani model. Opravdu není potřeba znovu objevovat kolo.

to podle mě není REST. Správně odpověděl Natix. Url by měly být jen ve tvaru /resources nebo resources/id + nějaké parametry.
« Poslední změna: 29. 03. 2018, 14:41:13 od gll »


ttt

Re:Webove MVC - jak správně provázat Routes a Controllery u RESTu
« Odpověď #16 kdy: 29. 03. 2018, 15:27:42 »
Pokud se bavime o zavislostech, takhle by to nemelo byt. Properties v GET parametrech se pouzivaji pro filtraci / razeni (tj treba GET /posts?sort=title,ASC, nebo GET /posts?filter.name=lorem*)

Filtrace podle user_id není filtrace?

mesius

Re:Webove MVC - jak správně provázat Routes a Controllery u RESTu
« Odpověď #17 kdy: 29. 03. 2018, 16:39:37 »
jenže když máte například získat všehny posty daného usera, uri může vypadat nějak takhle "GET xxx/users/:userID/posts", jakej controller na to z výše vyjmenovaných zavoláte? Ha? Žádnej - protože žádnej z výše uvedených tohle nedokáže zpracovat.

můžete udělat novej controller kterej bude pracovat s novým parametrem v URI, JENŽE bude tento controller z modelu User? (jasně, uri začíná "/users/:userID tak User) A NEBO ten controller bude z modelu POST, protože přece ta resource která se vrací je jen seznam vyfiltrovaných postů - a nebo uděláte úplně novej model? HA? (schválně neodpovím)

Tazateli jsem na toto odpověděl hned na začátku.
"GET xxx/users/:userID/posts" zpracovává user_controller::action_get_posts není potřeba na to vytvářet žádný nový kontroller ani model. Opravdu není potřeba znovu objevovat kolo.

to podle mě není REST. Správně odpověděl Natix. Url by měly být jen ve tvaru /resources nebo resources/id + nějaké parametry.

1. Pokud se nepletu, tak autor se neptal na to, co je a není RESTful, ale jak vytvářet MVC pattern vůči jednotlivým
routes.
2. RESTful API se nedefinuje tím, jakým způsobem se předávájí parametry v URL. I když existují good practises i v tomto směru, které podporují to co jsem napsal.

https://stackoverflow.com/questions/671118/what-exactly-is-restful-programming
https://blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/

a tak dale...

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Webove MVC - jak správně provázat Routes a Controllery u RESTu
« Odpověď #18 kdy: 29. 03. 2018, 22:30:30 »
když máte uri "POST xxx/users/" - je to jasný - voláte něco jako user.POST_controller
když máte uri "POST xxx/posts/" - opět je to jasný - voláte něco jako post.POST_controller

jenže když máte například získat všehny posty daného usera, uri může vypadat nějak takhle "GET xxx/users/:userID/posts", jakej controller na to z výše vyjmenovaných zavoláte? Ha? Žádnej - protože žádnej z výše uvedených tohle nedokáže zpracovat.
Závolá se user.POST_controler s filtrem, že se mají vrátit posty.

To url mi přijde ošklivé, takové neRESTové.

A už tu bylo řečeno, že POST by měla být akce kontroleru (respektive dá se to rozdělit, ale ne mechanicky podle metod).