如何在苗条框架中使用相同的路由 URL 进行多个操作


how to use same route url for multiple action in slim framework

>我正在使用苗条框架创建API。我面临以下问题。我使用其中一条路由进行给定输入。也就是说,json 输入:{ "tagname": "tname"} 。路线是

$app->post('/tag',function () use($app, $db){
    //code
});

现在,我想对另一个input.json使用相同的路由:[{"tid": "1"},{"tid": "2"}]。路线是

$app->post('/tag',function () use($app, $db){
    //code
});

如何解决?

Slim的路由器不能根据收到的内容为同一路径调用不同的函数。

在您的特定情况下,在一条路由上处理两种不同类型的输入数据的最简单方法是这样的(我假设您正在获取数据作为 POST 正文,其中 application/json 不是由 Slim2 处理的)

$app->post('/tag',function () use($app, $db){
   $payload = json_decode(file_get_contents('php://input'));
   if(is_array($payload)) {
       // code to deal with [{"tid": "1"},{"tid": "2"}] 
   } else {
       // code to deal with { "tagname": "tname"} 
   }
});

但更容易和合乎逻辑的是/tag单条路线和多条路线/tags路线。或者只需要将所有标签作为数组发送 - 即使是单个标签。

您可以传递额外的参数以在同一路由中执行另一个操作,并使用if条件分隔代码