请问hyperf如何像Thinkphp框架那样通过HttpResponseException那种捕获异常输出到客户端?
如:我需要返回给客户端的Json是[code=> 1, data=> ['username'=> '张三'], 'msg'=> 'success']这种格式的,如何在hyperf当中通过像Thinkphp框架那样直接从HttpResponseException捕获异常输出到客户端,而不是还需要 return $this->response->json([code=> 1, data=> ['username'=> '张三'], 'msg'=> 'success'])这种格式输出;
自定义异常类
namespace App\Exception;use Hyperf\Server\Exception\ServerException;class HttpResponseException extends ServerException{ protected $data; public function __construct($data, $message = "", $code = 0) { parent::__construct($message, $code); $this->data = $data; } public function getData() { return $this->data; }}
新建异常处理器:
namespace App\Exception\Handler;use App\Exception\HttpResponseException;use Hyperf\ExceptionHandler\ExceptionHandler;use Hyperf\HttpMessage\Stream\SwooleStream;use Psr\Http\Message\ResponseInterface;use Throwable;class HttpResponseExceptionHandler extends ExceptionHandler{ public function handle(Throwable $throwable, ResponseInterface $response) { // 判断异常是不是 HttpResponseException if ($throwable instanceof HttpResponseException) { // 获取异常里的数据 $data = $throwable->getData(); // 转成 JSON 响应 $response = $response->withAddedHeader('content-type', 'application/json')->withBody(new SwooleStream(json_encode($data))); } return $response; } public function isValid(Throwable $throwable): bool { return $throwable instanceof HttpResponseException; }}
在控制器里:
use App\Exception\HttpResponseException;public function someAction(){ //... // 抛出自定义异常 throw new HttpResponseException(['code' => 1, 'data' => ['username' => '张三'], 'msg' => 'success']);}
问: 如何与其它mvc框架(thinkPHP、Yii等)整合? 答: 与其它mvc框架结合建议以上图的方式(ThinkPHP为例): 1、ThinkPHP与Workerman是两个独立的系统,独立部署(可部署在不同服务器),互不干扰。 2、ThinkPHP以HTTP协议提供网页页面在浏览器渲染展示。 3、ThinkPHP提供的页面的js发起websocket连接,连接workerman 4、连接后
如何捕获 js 错误的调用栈,我现在捕获错误的内容如下: 我页面的 js 是压缩的,现在这个错误报告非常的不容易定位,我上报错误的代码如下: 我想请问一下能否像 php 那样打印整个调用栈,从最开始的入口处一直调用到具体的错误处。
问题内容: 我有一个node.js应用程序,我想使用它来检查特定站点是否启动并返回正确的响应代码。我希望能够捕获由于域名无法解析或请求超时而出现的任何错误。问题是这些错误导致Node无法处理。我是整个异步编程方法的新手,所以我不确定将try / catch语句放在哪里。 我有一个ajax调用,该调用类似于/ check / site1。服务器端调用一个函数,该函数尝试建立连接,然后返回status
问题内容: 我正在尝试从Python内部进行比特币付款。在bash中,我通常会这样做: 因此,例如: 如果成功,我会得到一个交易ID作为输出,但是如果我尝试转账大于我的比特币余额的金额,则会得到以下输出: 现在,在我的Python程序中,我尝试按以下方式进行付款: 如果有足够的余额,则可以正常工作,但是如果没有足够的余额,则会输出以下内容: 它不包括我在命令行中得到的错误。所以我的问题是;如何从P
我有一个从服务器端抛出的异常,我希望在客户端捕捉到这个异常。异常应该使用Jersey通过REST发送。这是我目前所掌握的: 定义我的异常:
本文向大家介绍ThinkPHP框架里隐藏index.php,包括了ThinkPHP框架里隐藏index.php的使用技巧和注意事项,需要的朋友参考一下 本文所写的配置在ThinkPHP3.2.2上测试过。按理也兼容其它版本。 首先修改配置文件: 'URL_CASE_INSENSITIVE' => true, // 默认false 表示URL区分大小写 true则表示不区分大小写 'URL_MODE