Skip to content

[FEATURE] 增加 RequestHandled 事件 #3573

@gokure

Description

@gokure

Is your feature request related to a problem? Please describe.
当开发 hyperf-cors 或者 hyperf-http-logger 等扩展时,需要同时对正常请求和异常结果进行包装,因为没有一个请求完毕的最终结果事件,需要增加ExceptionHandler来处理异常情况,同时还要说明让其异常处理器的顺序,例如想定义一个收集异常结果的日志,就要将这个异常处理器放在返回异常结果的后面,并且不能stopPropagation()

Describe the solution you'd like
即与上面所述,建议在处理完正常请求和异常请求包装完响应之后,增加 RequestHandled 事件来处理最终响应结果,类似于LaravelRequestHandled事件

Additional context
Hyperf\HttpServer\Server 类的 onRequest() 方法 finally 块中增加类似如下代码:

...
} finally {
    if ($container->has(EventDispatcherInterface::class)) {
        $eventDispatcher = $container->get(EventDispatcherInterface::class);
        $eventDispatcher->dispatch(new RequestHandled($psr7Request, $psr7Response));
    }
    ...
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions