路由如何只过滤post方法

我在router.php中添加了一个Route::post('token','...')的路由,但是如果用普通/token方法提交会出现MethodNotAllowedHttpException的错误。请问怎么处理掉其他get提交内容,还是每个对应的post都要有个get来消耗呢?谢谢

1.jpg


上面是我报错的图片。

1.jpg


就是我取消了get方法拦截,只拦截post方法就会出错。如果某些方法我只想有post方法拦截,那么怎么消耗掉所有get拦截?谢谢
已邀请:

kkkdd - phper

赞同来自: 雨师

Route::get('/test',array('uses'=>'HomeController@getTest'));
Route::post('/test',array('uses'=>'HomeController@ppTest'));

我这样写是没有你那个问题的

不知道你的测试方法是怎么测试的
我的方法是:
1. get地址栏直接输入。
2.post用 插件模拟post提交

还有一点你的别名。两个别重名呀

zhuzhichao

赞同来自: 雨师

其实该抛异常就让抛异常,最后统一在app/start/global.php中进行异常的捕获和处理。

比如你的HTTP请求没有找到,就在
App::error(function (NotFoundHttpException $exception) {
return Response::make('您访问的页面不存在', 404);
});
这段程序里面进行处理,所有没能得到处理的HTTP请求。这个要比你在route里面写那个让所有没有被『拦截』的路由更合适。

术业有专攻嘛!路由那里就让处理路由,处理不了的又专门处理后事儿的程序来搞。这样清晰明了。

可以参考我在global.php简单写的几个异常处理
异常处理
我上面的都很简单粗暴,输出的一句话,你当然也可以返回View::make,加上你喜欢的模板。

kkkdd - phper

赞同来自:

我觉得:
1.把错误截图发出来
2. 既然注册的是post的方法:测试的时候要模拟post的方式,千万别地址栏直接输入地址访问
3. 注册了路由
Route::post('token',function(){
//dosomething... #
})
或者在function的地方填写对应的控制器方法。。。

能想到的是这些了

DStrider

赞同来自:

'as'=>'/'这里换成'as'=>'token' 试试看。

雨师

赞同来自:

终于实现了!谢谢@kkkdd 的思路,把一个默认any路由放在最后。但是如果路由后面还有内容我这边无法实现继续用这个any路由拦截。后来问另外一个问题,见如何做统一路由拦截 找到了思路。对最后的路由加上这种统一拦截,那么所有没有的路径都会去这里了!无论get还是其他。
Route::pattern('allmatch', '[\S\s]*');
Route::any('/test{allmatch}', 'xxx');

谢谢@zhuzhichao

ZnithMay

赞同来自:

if (is_null($key)) App::abort(404);
将GET添加传入变量,如果无跳转到404窗口
404自己做好,就不会有错误

要回复问题请先登录注册