Symfony控制器能否以相同的方法同时返回多个响应?

Symfony控制器能否以相同的方法同时返回多个响应?,symfony,Symfony,因此,我制作了一个控制器,其中包含一段代码,该代码从一个实体(我们称之为“Book”)获取多个对象,并返回一个响应对象,其中包含该书的json数组版本。调用此请求后,我的服务器崩溃,我的整个symfony应用程序收到502“坏网关”响应。symfony是否可能不允许对同一请求使用多个响应对象?服务器是否因此崩溃?提前谢谢。我将在下面留下代码: /** * @Route("/getallbooks") * @param Request $request * @return

因此,我制作了一个控制器,其中包含一段代码,该代码从一个实体(我们称之为“Book”)获取多个对象,并返回一个响应对象,其中包含该书的json数组版本。调用此请求后,我的服务器崩溃,我的整个symfony应用程序收到502“坏网关”响应。symfony是否可能不允许对同一请求使用多个响应对象?服务器是否因此崩溃?提前谢谢。我将在下面留下代码:

/**
 * @Route("/getallbooks")
 * @param Request $request
 * @return Response
 */
public function getAllBooks()
{
    $allBooks = $this->em->getRepository(Book::class)->findAll();
    foreach ($allBooks as $book){
        return new Response(json_encode($book->toArray()));
    }
}

当然,您不能为一个请求返回多个响应。
返回一个单一响应,将所有书籍放在
数组中

$allBooks = $this->em->getRepository(Book::class)->findAll(); 
$data = array_map(function($book) { return $book->toArray(); }, $allBooks);
return new Response(json_encode($data));

当然,您不能为一个请求返回多个响应。
返回一个单一响应,将所有书籍放在
数组中

$allBooks = $this->em->getRepository(Book::class)->findAll(); 
$data = array_map(function($book) { return $book->toArray(); }, $allBooks);
return new Response(json_encode($data));
如果从函数中调用,return语句将立即结束当前函数的执行,并将其参数作为函数调用的值返回。。。 从

第一次返回后,循环和函数执行结束

试试这个

/**
 * @Route("/getallbooks")
 * @param Request $request
 * @return Response
 */
public function getAllBooks()
{
    $allBooks = $this->em->getRepository(Book::class)->findAll();
    $response = [];
    foreach ($allBooks as $book){
        $response[] = array(
            'id' => $book->getId()
            //add here other info
        );
    }
    return new JsonResponse(  $response);
}
回应

[{"id":1},{"id":2},{"id":3},{"id":4},{"id":5},{"id":6},{"id":7},{"id":8},{"id":9},{"id":10},{"id":11},{"id":12},{"id":13},{"id":14},{"id":15},{"id":16},{"id":17},{"id":18},{"id":19},{"id":20},{"id":21},{"id":22},{"id":23},{"id":24},{"id":25},{"id":26}]
如果从函数中调用,return语句将立即结束当前函数的执行,并将其参数作为函数调用的值返回。。。 从

第一次返回后,循环和函数执行结束

试试这个

/**
 * @Route("/getallbooks")
 * @param Request $request
 * @return Response
 */
public function getAllBooks()
{
    $allBooks = $this->em->getRepository(Book::class)->findAll();
    $response = [];
    foreach ($allBooks as $book){
        $response[] = array(
            'id' => $book->getId()
            //add here other info
        );
    }
    return new JsonResponse(  $response);
}
回应

[{"id":1},{"id":2},{"id":3},{"id":4},{"id":5},{"id":6},{"id":7},{"id":8},{"id":9},{"id":10},{"id":11},{"id":12},{"id":13},{"id":14},{"id":15},{"id":16},{"id":17},{"id":18},{"id":19},{"id":20},{"id":21},{"id":22},{"id":23},{"id":24},{"id":25},{"id":26}]