2017-05-02 3 views
1

Derzeit folgt das Lernprogramm von how to create Rest API auf Symfony 3.x.FosBundle-Route nicht gefunden

Mein Problem ist im stecken mit getAction() Methode mit diesem Code.

namespace SwipeBundle\Controller\Backend\API; 

use FOS\RestBundle\Controller\Annotations as Rest; 
use FOS\RestBundle\Controller\FOSRestController; 
use Symfony\Component\HttpFoundation\Response; 
use FOS\RestBundle\View\View; 

class UserController extends FOSRestController 
{ 
    /** 
    * @Rest\Get("/api/user") 
    */ 
    public function getAction() { 
     $restresult = $this->getDoctrine() 
      ->getRepository('SwipeBundle:User') 
      ->findAll(); 

     if ($restresult) { 
      return new View("there are no users exist", Response::HTTP_NOT_FOUND); 
     } 
     return $restresult; 
    } 
} 

die Fehler auf den Protokollen überprüft:

Uncaught PHP Exception Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException: "Keine Route für "GET/api/user"" bei /home/swipecom/contactless/var/cache/prod/classes.php Zeile 4595 {"Ausnahme": "[Objekt] (Symfony \ Komponente \ HttpKernel \ Exception \ NotFoundHttpException (Code: 0)): keine Route gefunden für \ "GET/api/user \" bei /home/swipecom/contactles s/var/cache/prod/classes.php: 4595, Symfony \ Komponent \ Routing \ Exception \ ResourceNotFoundException (Code: 0): um /home/swipecom/contactless/var/cache/prod/appProdProjectContainerUrlMatcher.php: 750) "} []

I geprüft und konfiguriert ist, die FOSRest configuration and Nelmio aber immer noch nicht funktioniert.

Hier ist sie:

# Nelmio CORS Configuration 
nelmio_cors: 
    defaults: 
     allow_credentials: false 
     allow_origin: ['*'] 
     allow_headers: ['*'] 
     allow_methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'] 
     max_age: 3600 
     hosts: [] 
     origin_regex: false 

# FOSRest Configuration 
fos_rest: 
    body_listener: true 
    format_listener: 
     rules: 
      - { path: '^/', priorities: ['text/html'], fallback_format: html, prefer_extension: false } 
      - { path: '^/api/', priorities: ['json'], fallback_format: json, prefer_extension: false } 
    param_fetcher_listener: true 
    view: 
     view_response_listener: 'force' 
     formats: 
      json: true 
      xml: true 
      yml: true 

Antwort

0

Verwenden Sie den Pfad Attribut als Beispiel:

* @Rest\Get(path="/api/user") 

statt

* @Rest\Get("/api/user") 

Sie können mit dem Konsolenbefehl debuggen:

alle verfügbaren Route anzuzeigen:

Konsole debug: Router

Um zu sehen, die Route anzeigen lassen:

Konsole Router: match/api/user

Anm .:

Wenn das Problem weiterhin besteht das folgende Kommando

Konsole debug: Router --show-Controller

und die Suche nach Ihrem Controller und sehen, was passiert. Wenn Ihr Controller beispielsweise nicht aufgelistet ist, überprüfen Sie die Routing-Konfiguration wie im Dokument here beschrieben.

Hope this Hilfe

+0

Weg der Controller?danke – phpmeter

+0

Ich habe meiner Route gerade ein Pfadattribut hinzugefügt. path = "/ api/user" funktioniert immer noch nicht, ich habe den Router auch mit dem Router überprüft: Übereinstimmung und Fehler sagen Keine der Routen stimmen mit dem Pfad überein – phpmeter

+0

@phpmeter Siehe mein Update: versuche mit 'console debug: router - show-controllers' und suchen Sie nach Ihrem Controller – Matteo