piszd 的个人博客 / 0 / 3 / 创建于 4年前
我的项目中存在api和web服务。在$middleware中配置之后,无论是web还是api在产生异常都变成了返回json。如果优雅的配置仅对api生效。
本作品采用《CC 协议》,转载必须注明作者和本文链接
public function handle($request, Closure $next) { ... $response = $next($request); if (!$request->expectsJson()) { return $response; } ... }
/** * 异常接管处理 * @param \Illuminate\Http\Request $request * @param Exception $exception * @return \Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\Response * @throws Exception */ public function render($request, Exception $exception) { $response = parent::render($request, $exception); list($api) = explode('/',trim($request->getRequestUri(),'/')); if (isset($api) && strtolower($api) == 'api') { $exceptionCode = $exception->getCode(); return $this->formatResponse($response,$exceptionCode); } return $response; }
/** * 需要被以Json返回的路由清单 * @var array */ protected $routes = ['api']; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $thisRoute = strtolower(explode('/',trim($request->getRequestUri(),'/'))[0]); if (in_array($thisRoute, $this->routes) || $request->expectsJson()) { $request->headers->set('Accept', 'application/json'); } return $next($request); }
我要举报该,理由是: