我的问题:当我执行GET /print-jobs/
时,它正确地路由到我的控制器中的index
方法。当我说POST /print-jobs/
时,它应该转到我的store
方法。但是,它似乎也是路由到我的index
方法。这只发生在我的生产环境中,我在Apache下运行Laravel。
路线代码:
Route::group(['prefix' => 'print-jobs'], function () {
Route::get('/', 'PrintJobMasterController@index');
Route::get('/{printJob}', 'PrintJobMasterController@show')->where(['printJob' => '[0-9]+']);
Route::post('/', 'PrintJobMasterController@store');
...
}
相关控制器代码:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class PrintJobMasterController extends Controller {
/**
* Display all PrintJob models
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request) {
Log::info('PJMC::index: rendering index of all print jobs');
...;
}
/**
* Store a newly job request en masse
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request) {
Log::info("PJMC::store: creating new job");
...;
}
...;
}
现在,我希望在我的日志中看到当我拨打PJMC::index:
时以GET /print-jobs/
开头的消息以及当我致电PJMC::store:
时以POST /print-jobs/
开头的消息。但是,无论是在浏览器中执行此操作的时间:$.get('/print-jobs')
和$.post('/print-jobs/', {_token: window.Laravel.csrfToken, ...})
,我都会在我的日志文件中看到以下内容:
[2017-06-09 10:27:17] local.INFO: PJMC::index: rendering index of all print jobs [2017-06-09 10:27:23] local.INFO: PJMC::index: rendering index of all print jobs
请求两次都路由到index
方法!我在浏览器中查看了我的网络历史记录,请求确实分别注册为GET
和POST
,这使我怀疑问题是在后端的某个地方。但是,当我使用Laravel的测试套件呼叫这些路线时,我没有任何问题。
有什么想法吗?提前谢谢。
答案 0 :(得分:1)
删除/
中的尾部斜杠$.post()
,它应该有效。
<强>错误:强>
$.post('/print-jobs/', {_token: window.Laravel.csrfToken, ...})
<强>正确:强>
$.post('/print-jobs', {_token: window.Laravel.csrfToken, ...})