路线-Slimframework

时间:2018-09-19 13:57:50

标签: php slim

我正在尝试制作一个简单的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我无法。

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

2 个答案:

答案 0 :(得分:2)

您可以将其他过滤器作为GET参数传递到URL:

another example for create file:
  i have a folder names files where saved my creating my files and file ext = .txt 
 $fh = fopen("$files/{$id}.txt","w");
  fwrite($fh,$_POST['description']);//description is my field name where write something and send via post method
   fcolse($fh)

然后您可以使用/api/cars?color=red /api/cars/honda?color=red /api/cars/honda/civic?color=red 来阅读它。

答案 1 :(得分:0)

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

例如:

$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应该改为接受查询字符串。