2017-10-25 14 views
1

私はバックエンドとして小さな自己執筆フロントエンド(jQuery)を使用しています。私のフロントエンドには、私のRESTサーバーを呼び出すためのajaxコマンドがあります。 今、クライアントでDELETEを使用できないという問題に直面しています。これは、HTTPリクエストメソッド(GET)と一致しないためです。要求の不一致によるスリム3のエラーuri&request method

If your Slim Framework application has a route that matches the current HTTP request URI but NOT the HTTP request method, the application invokes its Not Allowed handler and returns a HTTP/1.1 405 Not Allowed response to the HTTP client.

今はGETまたはPUTを使用することができますが、私はすでに他のアクションのために宣言されたもののルートを持っているので、それはおそらくありません:

405 Method not allowed. Must be one of: GET, PUT 

公式ドキュメントは、それがデフォルトで許可されていないと述べたと言います。

Slim Application Error: The application could not run because of the following error: Details Type: FastRoute\BadRouteException Message: Static route /api/v1/folders/ is shadowed by previously defined variable route /api/v1/folders/(.*) for method GET

// Folder routes 
$this->group('/folders', function() { 
    $this->get('[/{params:.*}]', 'FolderController:index'); 
    $this->post('', 'FolderController:create'); 
    $this->put('[/{params:.*}]', 'FolderController:update'); 
    $this->delete('/[/{params:.*}]', 'FolderController:delete'); 
})->add('AuthenticateMiddleware'); 

あなたは私にこの問題を解決する方法についてアドバイスをお願いできますか?私は多くのフレームワークがSlim 3のように振る舞い、を使用するような特定の状況で405 Method not allowedエラーを投げますが、ブラウザでクリックすることができないので、これはREST世界での一般的な問題ではありませんGETですか?私のコメントを1として

+0

リンクをクリックすると失敗したリクエストが発生していますか? ? Slimが正しいコントローラを呼び出すためには、要求メソッドは「DELETE」でなければなりません。また、あなたの削除ルートには余分な '[' ' –

+1

@AlexandruUngureanuがあります。あなたが' 'を削除した後、私のAjax' DELETE'で作業を開始したので、あなたはワシ目を持っています。小さな投稿をしてください、私はあなたの答えを受け入れるでしょう!ありがとうございました! – Magiranu

答えて

1

Is the failing request happening when you click on a link? <a></a> ? The request method has to be DELETE in order for Slim to invoke the right controller. Also note that your delete route has an extra [

幸運!

関連する問題