Как передать данные JSON в API остальных в symfony2

0

Я создаю rest api для symfony 2, но не могу передать данные JSON для отправки методу. $userform->isValid() всегда сбой.

curl -v -H "Accept: application/json" -X POST -d '{"username":"hitesh","userpassword":"hitesh123"}' http://localhost/us/serenify/web/app_dev.php/user/login

Это данные, которые я передаю для целей тестирования.

  public function loginAction(Request $request)
    {
         return $this->processForm(new User(),$request);
    }



 private function processForm(User $user,$request)
    {   
        $userform = $this->createForm(new UserType(), $user);       
        $content = $this->getRequest();              
        $userform->submit($content);
       $key = md5(microtime().rand());
            if ($userform->isValid()) 
            {

                if(trim($data['username'])=="" || trim($data['userpassword']==""))
                { 
                       $data=array(
                                "success"=>'false',
                                "msg"=>'username or password is blank'    
                            );
                        $response = new Response(json_encode($data));
                        $response->setStatusCode(203);
                        $response->headers->set('Content-Type', 'application/json'); 
                }
                else
                {   
                    $username=trim($data['username']);
                    $userpassword=trim(md5($data['userpassword']));

                    $user = $this->getDoctrine()
                                       ->getRepository('SerenifyUserBundle:User')
                                       ->findOneBy(array('username' => $username, 'userpassword' => $userpassword));
                    if (!$user)
                    {
                        $data=array(
                                "success"=>'false',
                                "msg"=>'username or password is wrong'    
                            );
                        $response = new Response(json_encode($data));
                        $response->setStatusCode(404);
                        $response->headers->set('Content-Type', 'application/json');     
                    }
                    else
                    {
                         $data=array(
                                "success"=>'true',
                                "msg"=>'user has sucessfully logged in',
                                "username" => $username,
                                "sessionis" => $key,

                            );
                        $response = new Response(json_encode($data));
                        $response->setStatusCode(404);
                        $response->headers->set('Content-Type', 'application/json');  
                    }
                     $response = new Response(json_encode($data));    
                }
            }
            else
            {
                $data=array(
                                "success"=>'false',
                                "msg"=>'invalid form content'    
                            );
                        $response = new Response(json_encode($data));
                        $response->setStatusCode(404);
                        $response->headers->set('Content-Type', 'application/json');  

             }
        return $response;
    }

Выше мой код контроллера.

Когда я печатаю значение запроса, оно не отображается в формате JSON.

В любом случае, чтобы проверить или передать данные JSON? Я создаю логин.

  • 0
    Попробуйте $content = $request->getContent(); и ты должен получить свою строку. Затем вам нужно сделать $json = json_decode($content);
Теги:
curl
rest

2 ответа

1
Лучший ответ

Для этих целей был создан FOSRestBundle. И я думаю, вы должны начать использовать его в своем проекте. Он не имеет накладных расходов и прост в использовании.

https://github.com/FriendsOfSymfony/FOSRestBundle

С уважением.

  • 0
    BigBoss прав - FOSRestBundle делает свое дело в вашем случае, и вам не придется вручную обрабатывать каждую отправку формы. Вот подробное руководство о том, как легко начать работу с FOSRest в Symfony
1

Недавно мне было нужно что-то подобное, поскольку я широко использую AngularJS чья служба $http отправляет данные в JSON для моих контроллеров.

Я нашел решение, внедряя службу, которая слушает входящие запросы, распаковывает JSON и предоставляет объект Request.

Проверьте раздел "Правильный путь " этой ссылки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню