Я создаю мобильное приложение (iOS) и серверную часть Symfony2 REST. В Symfony2 мои маршруты работают правильно, и я проверил их с помощью AJAX и httpie, все операции CRUD и т. д. в порядке. Теперь я пытаюсь получить доступ к маршрутам из приложения. Пока что я могу получить доступ к маршрутам, и когда я смотрю в Symfony2 Profiler, я вижу записи в последних 10 записях, чтобы убедиться, что я обращаюсь к серверу с моими запросами POST и GET. Теперь у меня есть 2 вопроса, и я был бы рад, если бы люди могли указать мне направление для ** Best Practices ** о том, как действовать дальше.
Проблема 1: Хотя я отправляю данные, которые я вижу в разделе «Запрос», когда я пытаюсь создать запись, создаются только записи NULL, что означает, что данные теряются. Это мой контроллер для создания пользователей, например:
public function postUserAction(Request $request)
{
$content = $this->get('request')->getContent();
$serializer = $this->get('jms_serializer');
$entity = $serializer->deserialize($content, 'Name\BundleName\Entity\User', 'json');
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return array(
'entity' => $entity,
);
}
Когда я смотрю в журнал, единственное, что выделяется, это: Запрос файлов cookie (без файлов cookie), Запрос контента: «Запрос контента недоступен (он был получен как ресурс)». Это говорит мне, что данные отсутствуют, как я могу получить эти данные и использовать их? Или что еще может быть?
Проблема 2: GET возвращает пустой ответ JSON без данных, только ключи, когда я NSlog (выведите его). Мой код выглядит так:
public function getUsersAction()
{
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository('NameBundle:User')->findAll();
return array(
'entities' => $entities,
);
}
Из журнала он имеет набор файлов cookie запроса: PHPSESSID => «1udududjjs83883jdlb4ho0j4», но снова в содержимом запроса говорится: «Содержимое запроса недоступно (оно было получено как ресурс)». Как я могу заставить его возвращать данные с помощью JSON? Это хорошо работает в браузерных тестах AJAX и httpie.
Проблема 3: Используя AFNetworking, у меня есть символическая константа, которую я установил как APIHost (IP-адрес), а APIPath — это папка. Теперь в моей более ранней версии с использованием собственного PHP я создал фактический код для выполнения в index.php, отправив параметр в JSON, поэтому, если мне нужен логин, я отправил что-то вроде todo:login, но с Symfony2, я не уверен или знать даже лучшие практики для этого случая. В идеале я хотел бы указать запрос на стороне сервера в запросе JSON, а затем найти правильный маршрут в Symfony2, но как это сделать, и если да, можете ли вы привести пример? Обходной путь заключается в том, чтобы указывать жестко закодированные пути в AFNetworking каждый раз, когда мне нужно сделать запрос, который, как мне кажется, тесно связывает код, и мне нужно вносить изменения во многих местах каждый раз, когда что-то меняется на стороне сервера. Спасибо и извините за долгий вопрос!