私はいくつかのエンティティをJSONとして出力する必要があるAPIを構築しています。エンティティを正規化してJsonResponse
に渡す方が良いか、それをシリアル化してResponse
に渡すべきかどうかを判断しようとしています。両者の違いは何ですか?Symfonyのシリアル化された応答と正規化されたJsonResponse
/**
* Returning a Response
*/
public function getEntityAction($id)
{
$entity = $this->getDoctrine()->getRepository(MyEntity::class)->find($id);
$json = $this->get('serializer')->serialize($entity);
$response = new Response($json);
$response->headers->set('Content-Type', 'application/json');
return $response
}
/**
* Returning a JsonResponse.
*/
public function getEntityAction($id)
{
$entity = $this->getDoctrine()->getRepository(MyEntity::class)->find($id);
$array = $this->get('serializer')->normalize($entity);
return new JsonResponse($array);
}
2の間の任意の実際の差は事実のほかに、私は手動でJsonResponse
ためContent-Type
ヘッダーを設定する必要はありません、ありますか?
あなたは正しいです。私は彼らが以前に何をしたかを見てきましたが、私はもっと深く掘りました。 'JsonResponse'は、HTMLをエンコードするのに安全ないくつかの[エンコーディングオプション](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/JsonResponse.php#L32)を設定します。 'Content-Type'ヘッダも設定します。だから私はJsonEncodeを使うつもりだと思うので、私はそれらを自分でやる必要はない。 –