如何处理 laravel 中未定义的 POST 路由?
需求场景:
我的项目是一个纯接口项目(所有接口都是 POST 方式),希望在用户访问不存在的路由时,以友好的 json 格式返回错误信息,告知路由不存在。
我的做法:
在路由文件最后一行添加:
Route::fallback('ErrorController@notFound');
预期结果:
当使用 GET 方式请求不存在的路由时,正确返回了错误信息。但当使用 POST 方式请求不存在的路由时,是一个包含错误信息的页面(不是正确的接口返回格式),形如:
我的问题:
如何处理不存在的 POST 路由,才能使得返回的数据是接口形式,而不是一个错误页面?
fallback好像只能针对于get 其他的是 框架自带的 提示你这个路由只能有post还是put
你可以在异常文件里面 重写这个异常
app\Exceptions
Handler
里面捕获MethodNotAllowedHttpException
异常可以在
app\Exceptions
目录下Handler
中render
方法捕获异常,类似这样:Route::fallback
本质上是一个语法糖,追一下源码就知道怎么解决了不知道你是怎么用的, 我试过没问题的。
测试的时候, 在
Headers
里要添加Accept
:application/json
。把路由文件里的
fallback
去掉,然后自己在render
捕获异常抛出6 楼是正解,楼主你换下对象类型应该就可以了
全局错误处理
异常处理哪里做下异常处理就好了