2 Stimmen

Überschreiben Sie die Standardeinstellung von ".{_format}" in Routen mit Hilfe von FOSRestBundle und Symfony2.

Ich frage mich, ob es möglich ist, Routen in FOSRestBundle-Methoden zu definieren, die das Format mit etwas anderem als einem "Punkt" davor angeben.

Zum Beispiel, nehmen wir an, ich möchte, dass Folgendes funktioniert:

 http://somesite.com/api/user/20        (rendert im Standard/Fallback-Format)
 http://somesite.com/api/user/20/json   (rendert als JSON)
 http://somesite.com/api/user/20/xml    (rendert als XML)

Wenn ich versuche, eine Route wie folgt zu definieren:

/**
 * @Get("/user/{id}/{_format}
 */
public function getUserAction($id)
{
  // mache etwas
}

Bekomme ich dies:

Routenmuster "/api/users/{maximum}/{_format}.{_format}" kann nicht mehr als einmal auf die Variablenbezeichnung "_format" verweisen.

Das ließ mich erkennen, dass es - und damit meine ich, wir reden standardmäßig über FOSRestBundle und nicht Symfony2 - automatisch das ".{_format}" am Ende jeder von mir definierten Route hinzufügt. Das hat mich überrascht!

Also funktioniert es derzeit in meinem früheren Beispiel wie folgt:

 http://somesite.com/api/user/20        (rendert im Standard/Fallback-Format)
 http://somesite.com/api/user/20.json   (rendert als JSON)
 http://somesite.com/api/user/20.xml    (rendert als XML)

Ein kleiner Unterschied, das stimmt, aber ich versuche gerade, eine Legacy-App zu übertragen, die diese Syntax verwendet. Ist das, was ich versuche, möglich? Wenn ja, wie kann ich diese automatische Hinzufügung von ".{_format}" zu jeder Route deaktivieren?

Danke!

6voto

futureal Punkte 2995

Es ist ein Jahr vergangen und FOSRestBundle unterstützt jetzt das Feature, nach dem ich gesucht habe.

Sie können dieses Verhalten über die folgende Konfiguration steuern:

fos_rest:
    routing_loader:
        default_format:       ~
        include_format:       true

Setzen Sie include_format auf false, um das Format aus dem Route zu entfernen.

Sie können die erweiterten Konfigurationsoptionen für FOSRestBundle hier anzeigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X