2

スリムを使用して冒涜フィルタリング 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

私もこの問題を抱えています、これが私の解決策です:

$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 に答える
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 に答える