如何将 HTTP 响应传递给 JSON?

How to pass HTTP response to JSON?

我正在开发一个代码库,其中控制器具有以下代码行。控制器检查异常,如果没有错误return JSON 响应,否则抛出异常错误。

     return $this->exception->tryCatch(
        fn () => $this->json(
            $this->customer->addUser()
        )
    );

public function tryCatch(callable $work): Response
{
    try {
        return $work();
    } catch (Throwable $e) {
        throw $exception;
    }
}

但这总是会产生 200 个响应。如果我需要不同的响应(201),我该如何调整这段代码。我被要求不要破坏代码结构。所以在这里询问任何建议。

 /**
 * Returns a JsonResponse that uses the serializer component if enabled, or json_encode.
 */
protected function json($data, int $status = 200, array $headers = [], array $context = []): JsonResponse

json 方法的第二个参数获取响应的状态。默认是200,你可以自己指定。

例如:

 $this->json($this->customer->addUser(), 201);