Sie können keine obligatorischen Platzhalter nach optional haben. Wenn Sie versuchen, gibt Ihnen fastRoute (Router, von Slim verwendet) einen Fehler.
Und auch wenn wir von Slim und fastRoute abstrahieren, empfehle ich Ihnen, die URL-Struktur Ihrer API zu überdenken. Es ist natürlich, dass obligatorisch zuerst kommt, optional kommt später.
Um gleiche Rückruf für die Strecken zu nutzen, empfehle ich Ihnen page
als Abfrage-Parameter übergeben:
$this->get('/FetchImages/{categoryId}[/{subcategoryId}]', function($request, $response, $args) {
$categoryId = $args['categoryId'];
$subcategoryId = $args['subcategoryId'];
// Get requested page value.
// It defaults to null if no page specified
$page = $request->getQueryParam('page', null);
});
Und senden Anfrage wie folgt aus:
GET http://myapp.com/FetchImages/kittens/dangerous?page=2
In diesem Fall, dass Sie Es ist frei, die Seite zu übergeben oder zu überspringen, und die URL-Struktur ist immer noch ziemlich sauber.
Es ist eine alternative Lösung, denn jetzt funktioniert es. –