我建立這需要一些輸出中實體JSON的API。我試圖找出是否最好將實體標準化並將其傳遞給JsonResponse
,或者我應該將其序列化並將其傳遞給Response
。兩者有什麼區別?Symfony的系列化響應VS標準化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);
}
有任何兩者之間的實際差值,除了事實上,我不必手動設置爲JsonResponse
的Content-Type
頭?
你說得對。我確實看過他們早些時候做的事情,但我挖得更深。 'JsonResponse'設置了一些[編碼選項](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/JsonResponse.php#L32),這使得編碼HTML是安全的。它還設置了「Content-Type」標題。所以我想我會使用JsonEncode,所以我不必自己做這些事情。 –