当前位置: 首页 > news >正文

快速网站开发框架百度网页版首页

快速网站开发框架,百度网页版首页,汕头网站建设推广平台,怎样优化网站案例前提 我希望通过中间件记录用户的请求数据、我的返回数据,如果出现异常捕获异常。 代码 路由文件:追加中间件api-logging,用于记录日志 Route::prefix(api)->middleware([api, api-logging])->group(function () {...路由内容 });n…

前提

我希望通过中间件记录用户的请求数据、我的返回数据,如果出现异常捕获异常。

代码

路由文件:追加中间件api-logging,用于记录日志

Route::prefix('api')->middleware(['api', 'api-logging'])->group(function () {...路由内容
});
namespace App\Http;
class Kernel extends HttpKernel
{...其他内容protected $routeMiddleware = [... 其他中间件'api-logging' => \App\Http\Middleware\ApiLoggingMiddleware::class,];
}

重点:中间件的编写

<?phpnamespace App\Http\Middleware;use Closure;
use Illuminate\Http\Request;
use App\Models\GameThirdPartyCallback;class ApiLoggingMiddleware
{public function handle(Request $request, Closure $next){$requestHeaders = $request->header();$requestData = $request->all();$source = $request->header('referer') ?? $request->ip();try {// 执行请求并获取响应$response = $next($request);$responseStatus = $response->status();$responseContent = $response->getContent();} catch (\Exception $exception) {// 记录异常信息GameThirdPartyCallback::create(['request_headers' => json_encode($requestHeaders),'callback_data' => json_encode($requestData),'response_status' => 500, // 或其他适当的错误状态码'response_content' => 'An error occurred: ' . $exception->getMessage(),'sources' => $source]);// 重新抛出异常,交由Laravel处理throw $exception;}// 记录正常的响应数据GameThirdPartyCallback::create(['request_headers' => json_encode($requestHeaders),'callback_data' => json_encode($requestData),'response_status' => $responseStatus,'response_content' => $responseContent,'sources' => $source]);return $response;}
}

我希望在,下面这段可以当 n e x t ( next( next(request); 出现异常被捕获

try {// 执行请求并获取响应$response = $next($request);} catch (\Exception $exception) {// 重新抛出异常,交由Laravel处理throw $exception;}

然而并不行,如果控制器中出现了异常,会被laravel的全局异常处理机制捕获,$response = $next($request); 会返回捕获后的异常处理的类,也就是异常已经被处理掉了

最终处理方案

在全局异常处理的时候,将异常内容插入到request中,然后在中间件去获取这个自定义的属性

  1. 全局处理文件中,加入下面这段代码

namespace App\Exceptions;use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;class Handler extends ExceptionHandler
{/*** Render an exception into an HTTP response.** @param  \Illuminate\Http\Request  $request* @param  \Throwable  $exception* @return \Symfony\Component\HttpFoundation\Response*/public function render($request, Throwable $exception){// 这里这段的内容是为了让异常内容可以被中间件获取// 因为控制器的异常会被laravel全局异常直接捕获,导致中间件获取的内容是异常页面$request->attributes->set('exception_message', $exception->getMessage());return parent::render($request, $exception);}
}

然后中间件中获取exception_message

<?phpnamespace App\Http\Middleware;use Closure;
use Illuminate\Http\Request;
use App\Models\GameThirdPartyCallback;class ApiLoggingMiddleware
{public function handle(Request $request, Closure $next){$requestHeaders = $request->header();$requestData = $request->all();$source = $request->header('referer') ?? $request->ip();$response = $next($request);  // 如果这里产生了异常,不会在这里try catch。而是直接返回了response的错误内容$responseStatus = $response->status();if ($responseStatus >= 400 && $responseStatus < 600) {GameThirdPartyCallback::create(['request_headers' => json_encode($requestHeaders),'callback_data' => json_encode($requestData),'response_status' => $responseStatus,'response_content' => $request->attributes->get("exception_message"),'sources' => $source]);} else {...}return $response;}}
http://www.hengruixuexiao.com/news/16229.html

相关文章:

  • 做网站用的文本编辑器海口seo计费
  • 南雄做网站关键词优化seo优化
  • 哪个网站可以做前端项目开鲁网站seo转接
  • 长沙建设品牌网站seo技术有哪些
  • 外贸自建站收款通道如何推广网上国网
  • 找网站建设企业李守洪
  • 如果安装wordpress主题大地seo视频
  • 深圳建设监理协会网站全国疫情高峰时间表最新
  • 企业网站建设需求调查表互联网搜索引擎有哪些
  • wap手机网站网络优化工程师证书
  • 优惠网站代理怎么做长沙专业竞价优化公司
  • 杭州高端网站建设公司哪家好今日新闻快报
  • 专业北京网站建设什么是网络营销?
  • 哈尔滨龙彩做网站多少钱竞价推广教程
  • wordpress插件woo网站怎么优化自己免费
  • 怎么通过做网站赚钱深圳网络推广外包公司
  • 东昌府区住房和城乡建设局网站代发百度首页排名
  • 贵港网站设计免费广州seo
  • 沭阳网站建设如何修改百度上面的门店号码
  • 广东网站备案电话号码2021年网络营销案例
  • 网站设计图尺寸优化整站
  • 廊坊市 广阳区城市建设局网站全渠道营销
  • 域名备案与网站不一致免费自建网站有哪些
  • 帝国文章网站模板it培训机构排行榜
  • 网站建设中怎么编辑图片爱站seo综合查询
  • 做网络推广的多少钱一个月黄山seo排名优化技术
  • b2c购物网站前台代码云盘搜索引擎入口
  • 少儿戏曲知识 网站建设seo网站优化排名
  • 品牌创意网站建设方象科技服务案例
  • wordpress只能下载一个文件下载seo网络优化师