2012-06-06 16 views
5

// MySomethingController.phpFOSRestBundle dodaje 'S' Get URL

// look no s 
public function getSomethingAction($args) 
{ 
    ... 
} 

// routing.yml

my_something: 
    type:  rest 
    resource: Blah\Bundle\BlahBundle\Controller\MySomethingController 

trwania:

php app/console router:debug 

wyjściowa:

[router] Current routes 
Name    Method  Pattern 
get_something  GET  /somethings/{args}.{_format} 

Dlaczego trasa "cosbings" (liczba mnoga z "s") zamiast "coś"?

Czy to ustawienie mam gdzieś? czy jest to oczekiwane?

+0

Dokumentacja powiedzieć, że jest poprawna: https : //github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/5-automatic-route-generation_single-restful-controller.md (Sprawdź 'metody getUserAction'.) – eagleoneraptor

+0

@eagleoneraptor one skonfigurowane do używaj użytkowników z 's' # app/config/routing.yml użytkowników, chyba że możesz wskazać, gdzie to oznacza to –

Odpowiedz

3

po wykopaniu w kodzie:

Oto ona:

private function generateUrlParts(array $resources, array $arguments) 
{ 
    $urlParts = array(); 
    foreach ($resources as $i => $resource) { 
     // if we already added all parent routes paths to URL & we have 
     // prefix - add it 
     if (!empty($this->routePrefix) && $i === count($this->parents)) { 
      $urlParts[] = $this->routePrefix; 
     } 

     // if we have argument for current resource, then it's object. 
     // otherwise - it's collection 
     if (isset($arguments[$i])) { 
      if (null !== $resource) { 
       $urlParts[] = 
        strtolower(Pluralization::pluralize($resource)) 
        .'/{'.$arguments[$i]->getName().'}'; 
      } else { 
       $urlParts[] = '{'.$arguments[$i]->getName().'}'; 
      } 
     } elseif (null !== $resource) { 
      $urlParts[] = strtolower($resource); 
     } 
    } 

    return $urlParts; 
} 

Mam otwarty problem:

w nadziei, że będzie to stały się opcjonalne

3

Ta aktualizacja jest odpowiedzią na podstawie biletu otwartego @phillpafford.

Ismith77 commented na bilecie i pomyślałem wyjaśnione bardzo dobrze dlaczego:

Bez liczby mnogiej nie wiedzielibyśmy relacji między metod, które będzie ważne na przykład przy wdrażaniu # 52. ponadto jest to kluczowa idea REST, że mamyGET dla pojedynczego elementu w kolekcji być w "subdir" z samej kolekcji .

Więc jeśli nie „właściwego” REST następnie /member/{id}.{_format} byłoby dziwnie nazwie ale byłoby naprawdę źle, jeśli kolekcja sama nie będzie wtedy również rezydować w/członka {. format}.

Istota tego wszystkiego polega na tym, że rozwiązanie to nie tyle samo wygoda, co egzekwowanie przestrzegania zasad REST .

PS: Jednak chciałbym podkreślić, że gdy masz słowo jak „danych”, które jest w liczbie mnogiej na jego właścicielem jest nieco irytujące ...

+0

Z jakiegoś powodu działa poprawnie dla operacji DELETE: POST KAŻDY ANY/auths/odświeżanie USUŃ WSZELKIE DOWOLNE/auth/wyloguj –