Symfony2 アプリケーション用の安らかな JSON API を構築しようとしています。
http://jmsyst.com/libs/serializer JMS\Serializer
Bundle を使用して、エンティティを にシリアル化していJSON
ます。
私はこの例を持っていますController-Action
:
public function getFarmerByNameAction(Request $request) {
$this->setLocale($request);
$name = $request->get("name");
$farmer = $this->getDoctrine()->getRepository("FarmerguideBackendBundle:Farmer")->findByName($name);
// Return json response
return new Response($this->jsonify($farmer));
}
私はこのシリアライザーを頻繁に使用しているため (シングルトンなどを実行する必要があることはわかっていますが、現在はその時間がなく、フレームワークで遊んでいただけです)、コードをシリアライズを行う関数。
private function jsonify($object) {
// Serialize to json
$serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new
JsonEncoder()));
$json = $serializer->serialize($object, 'json');
return $json;
}
私の問題は次のとおりです。
- このコードは の中にあり
BackendController
、GUI 固有の情報は含まれていません。つまり、単なる RESTful API です。 - 別のコントローラーで、
WebappController
これらのバックエンド関数にアクセスし、小枝ファイルと方法でいくつかのことを行うコードがあるとしましょうrender()
。 - これらすべての情報にモバイル経由で ajax 経由でアクセスしたい(したがって、この json 戻り値が必要です)
ここでのベストプラクティスは何ですか? それが ajax-call (check with if($request->isXmlHttpRequest())
) である場合は、レスポンスを返す直前に jsonify を実行し、そうでない場合はエンティティを返します (twig-templates のエンティティが必要です..) または別のアプローチはありますか?
それとも、一緒に作業し$request->getFormatType()
て ajax 呼び出しを行う 方が良いですか?contentType="application/json; charset=utf-8"