【发布时间】:2022-01-15 20:42:23
【问题描述】:
我的 Laravel 项目有很多控制器方法,这些方法在成功时根本不返回任何内容或 void。我希望(更准确地说是需要)这些方法最终向客户端返回 204 No Content 响应。我想避免在我需要的每个控制器方法中添加return response()->noContent()。但是,如果我不这样做,Laravel 会向客户端发送一个带有空正文的 200 OK 响应。
方法Illuminate\Routing\Router::toResponse($request, $response) 负责这个。参数$response 等于控制器方法的返回值。如果控制器方法没有返回任何内容,$response 等于 null。方法toResponse($request, $response) 将参数$response 与不同的条件匹配,如果没有匹配toResponse($request, $response),则创建一个SymfonyResponse,状态码为200,主体为空。我想覆盖这个方法并添加另一个条件。如果$response === null,那么toResponse($request, $response) 应该创建一个SymfonfyResponse,状态码为204。
我的主要问题是我没有找到任何信息如何使框架调用我自己的路由器类实现。
【问题讨论】:
标签: php laravel-8 laravel-routing laravel-response