Slim Framework One路由不同的方法

我正在尝试为字典App构建一个简单的REST API。 我想有两个 GET </ code>方法,它们可以通过id和query(字符串)获取单词。 问题是Slim框架通过第一种方法路由所有内容并忽略第二种方法。 我明白为什么它这样做,我知道你可以使用查询字符串参数,但我希望有一种方法可以通过这种方式实现它。 感谢您的帮助。</ p>

  http:// localhost:5000 / dictionary_api / words / 1 
$ app-&gt; get('/ words /:id', function($ id)use($ app,$ db){
});

http:// localhost:5000 / dictionary_api / words / hello
$ app-&gt; get('/ words / :word',function($ word)use($ app,$ db){
});
</ code> </ pre>
</ div>

展开原文

原文

I am trying to build a simple REST API for a dictionary App. I would like to have two GET methods that will get you the word by id and query(string). The problem is that the Slim framework routes everything through the first method and ignores the second one. I understand why it does it and I know you can use query string params but I am hoping there would be a way I can accomplish it this way. Thank you for your help.

http://localhost:5000/dictionary_api/words/1
$app->get('/words/:id', function($id) use ($app, $db) {
});


http://localhost:5000/dictionary_api/words/hello
$app->get('/words/:word', function($word) use ($app,$db){
});

1个回答



您可以提供一系列条件(正则表达式匹配),以便路由参数仅匹配特定格式。 尝试以下</ p>

  $ app-&gt; get('/ words /:id',function($ id)use($ app,$ db)\  n {
//
}) - &gt;条件(['id'=&gt;'[0-9] +']);
</ code> </ pre>

这将使:id </ code>参数仅匹配数值,其他任何不匹配的值,并跳到下一个路径。</ p>
</ div>

展开原文

原文

You can supply an array of conditions (regex matches) so that the route parameter will only match a certain format. Try the following

$app->get('/words/:id', function($id) use ($app, $db)
{
    //
})->conditions(['id' => '[0-9]+']);

This will make the :id parameter only match numeric values, anything else it shouldn't match and skip onto the next route.

duanhuiqing9528
duanhuiqing9528 非常感谢您的快速反应。 工作得很完美。
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐