Доступ к значениям POST в Symfony 4 Controller с помощью curl - PullRequest
0 голосов
/ 15 сентября 2018

Доброе утро.

В настоящее время я пытаюсь получить доступ к данным POST из запроса curl в контроллере Symfony 4.

Мой контроллер выглядит следующим образом:

class OrderController extends AbstractController  
{  
/**  
 * @Route("/order", name="order")  
 */  
public function index(Request $request)  
{                                                      
    var_dump($request->request->all());die;       

    return $this->json([                                    
        'message' => 'Welcome to your new controller!',     
        'path' => 'src/Controller/OrderController.php',     
    ]);                                                     
    }                                                           
}

Когда я запускаю php bin\console server:run и получаю доступ к localhost / order в браузере, я получаю страницу, которую он должен получить. Если я сверну URL с

curl http://127.0.0.1:8000/order

Я также получаю правильные результаты. Но когда я пытаюсь отправить тело json по запросу curl, на вышеуказанном контроллере я просто получаю пустой массив.

Мой запрос выглядит следующим образом:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '
{'json':{
"id": "1",
"customer-id": "1",
"items": [
  {
    "product-id": "B102",
    "quantity": "10", 
    "unit-price": "4.99",
    "total": "49.90"
  }
],
"total": "49.90"
}}' http://127.0.0.1:8000/order

Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 16 сентября 2018

Объект запроса будет возвращать параметры формы только через методы $ request-> request.если вы хотите получить доступ к телу JSON, вам нужно использовать $ request-> getContent ().Если это контент json, ваш код будет выглядеть примерно так:

$json = json_decode($request->getContent(), true);
var_dump($json['json']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...