>我正在使用苗条框架创建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条件分隔代码