路由 - 超薄框架

Routes - Slimframework

我正在尝试制作一个简单的 API,它将为我打印 cars。到目前为止,我做了 3 条简单的路线:

$app('/api/cars', function($req, $res, $arg) {
    //Display all cars
});
$app('/api/cars/{brand}', function($req, $res, $arg) {
    //Display all cars based on brand
});
$app('/api/cars/{brand}/{model}', function($req, $res, $arg) {
    //Display all cars based on brand
});

而且效果很好。但是如果我想用“?”显示汽车怎么办? color? 比方说: api/cars/red我做不到。

我真的不能那样做,因为它正在寻找品牌名称而不是颜色。

您可以将额外的过滤器作为 GET 参数传递给 URL:

/api/cars?color=red

/api/cars/honda?color=red

/api/cars/honda/civic?color=red

然后就可以使用$request->getParam('color')阅读了

根据您的路线,您将无法前往,因为正如您所指出的,它正在寻找品牌。如果您想要一个快速而肮脏的解决方案,您可以将端点更新为更具描述性。

例如:

$app('/api/cars/brand/{brand}', function($req, $res, $arg) {
    //Display all cars based on brand
});
$app('/api/cars/color/{color}', function($req, $res, $arg) {
    //Display all cars based on color
});

这减少了端点预期的任何歧义。理想情况下,您的 API 应该接受查询字符串。