2

我试图通过使用 slim 来构建一个亵渎过滤 API。这是该api的链接。

Link : http://www.employeeexperts.com/Profanity/index.php/rest/check/hello

在链接的末尾,我附加了“你好”这个词以进行亵渎检查。到目前为止,它工作正常。但是,当我在单词末尾添加任何点(。)时(例如:hello..),Slim 将控件重定向到索引页面。

我的 GET 路由器代码是这样的..

$app->get('/service/:method/:str', function ($method, $str) use ($app) {    
     // Internal codes goes here
});

任何人都可以帮我弄清楚如何阻止这种情况。

问候

4

2 回答 2

0

似乎默认的 GET 路由器不允许您的 URL 以点结尾。如果点后面有任何字符,则页面将正常运行。作为替代方案,您可以尝试自定义路由条件,如下所示:http: //docs.slimframework.com/#Route-Conditions

您的案例示例:

<?php
$app = new \Slim\Slim();
$app->get('/service/:method/:str', function ($year) {
    echo "You are viewing archives from $year";
})->conditions(array('str' => '([a-z]+)', 'str' => '(.*)'));

如果您计划使用 API 处理复杂数据(如完整文章或类似文章),我建议您通过 POST 传输数据。它可以为您省去很多麻烦。

于 2013-08-21T17:21:40.570 回答
0

我也有这个问题,这是我的解决方案:

$app->get('/service/+args', function ($args) use ($app) {    
    $arguments = str_replace("/service/", $app->request->getPathInfo());
    $args = explode('/', $arguments);
    var_dump($args);
});

当我访问 URL/service/foo/bar时,$args将是这样的:

array(
    'foo',
    'bar',
)

另外,当我访问 URL/service/foo/bar/baz/qux时,$args将是这样的:

array(
    'foo',
    'bar',
    'baz',
    'qux',
)
于 2014-11-17T10:43:28.207 回答