Ich habe eine Slim 3 Route: $app->get('/calendar/{date}', 'CalendarCtrl:getSchedule');
Diese Route kann den gleichen Zeitplan durch einfache HTML-Liste, JSON oder XML-Format zurückgeben.
Jetzt suche ich nach einer einfachen REST-Lösung basierend auf Accept
(oder mehr Header) HTTP-Header.Header-basierte Routing mit Slim 3
Zum Beispiel:
Anfrage:
GET /calendar/2017-01-01
Accept: application/json
Antwort:
Content-Type: application/json
Body: {json schedule}
So eine Route smth so sein sollte: $app->get('/calendar/{date}', {Accept: application/json}, 'CalendarCtrl:getScheduleJson');
Ich weiß, dass ich für diesen Header überprüfen in ein Routen-Handler. Aber ich suche nach einer einfachen deklarativen Lösung.
Danke für die Middleware-Idee zu senden. Es ist ein neues Konzept für mich, können Sie mir bitte beraten, welche Best Practices mit Middlewares in Slim sind? Sie haben eine anonyme Funktion verwendet, Slim-Dokumente verwenden eine aufrufbare Klasse, andere Handbücher erweitern SlimMiddleware (Slim 2). Was verwendest du als Best Practice in Middleware? Danke – Doc999tor
Noch eine Frage: in einem Fall von Accept: text/html Header muss ich eine HTML Seite mit Twig Template Rendering erstellen. Es ist ein wenig, aber komplizierter als einfach 'return $ response-> withHeader ('Content-type', 'application/json');' Die Frage ist: sollte ein solches Stück Logik in einer Middleware sein? Vielleicht ist der Controller der richtige Ort? Wenn ja, gehe ich zurück zur vorherigen Frage: Middlewares lösen das Problem mit dem headerbasierten Routing nicht. Es ist überhaupt kein Routing. – Doc999tor
Middleware in Slim ist einfach zu variieren, Sie werden eine Schicht um Ihre API überprüfen, bevor Sie die Anfrage an die API übergeben und etwas in der Antwort vor dem Senden an den Client hinzufügen –