我试图通过使用slim来构建亵渎过滤API。这是api的链接。
Link : http://www.employeeexperts.com/Profanity/index.php/rest/check/hello
在链接结束时,我附加“hello”这个词进行亵渎性检查。直到现在,它正常运作。但是,当我在单词的末尾添加任何点(。)(例如:hello ..)时,Slim将控件重定向到索引页。
我的GET路由器代码是这样的..
$app->get('/service/:method/:str', function ($method, $str) use ($app) {
// Internal codes goes here
});
任何人都可以帮我弄清楚如何阻止这一点。
此致
答案 0 :(得分: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传输数据。它可以为您节省很多麻烦。
答案 1 :(得分:0)
我也有这个问题,这是我的解决方案:
$app->get('/service/+args', function ($args) use ($app) {
$arguments = str_replace("/service/", $app->request->getPathInfo());
$args = explode('/', $arguments);
var_dump($args);
});
当我访问网址/service/foo/bar
时,$args
将是这样的:
array(
'foo',
'bar',
)
此外,当我访问网址/service/foo/bar/baz/qux
时,$args
将是这样的:
array(
'foo',
'bar',
'baz',
'qux',
)