2017-02-05 15 views
0

Я пытаюсь сделать запрос POST от пользовательского интерфейса Swagger на моем сервере (Lumen), но каждый раз я просто получаю пустой массив. Запрос

Кураж UI:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
"stocks":[ \ 
    { \ 
     "contract-number":0, \ 
     "metal-id":0, \ 
     "amount":0, \ 
     "unit":"string" \ 
    } \ 
] \ 
}' 'http://backend.mywebsite.de/v1/stocks' 

Мой контроллер:

... 
public function stocksPost(Request $request) 
{ 
     dd($request->all()); 
} 
... 

И выход:

/var/www/vhosts/localhost/htdocs/vendor/illuminate/support/Debug/Dumper.php:23: 
array(0) { } 

Но если я посылаю такой же запрос с Почтальон, все работает просто отлично :

/var/www/vhosts/localhost/htdocs/vendor/illuminate/support/Debug/Dumper.php:23: 
array(1) { 
    'stocks' => 
    string(68) "[{"contract-number": 0,"metal-id": 0,"amount": 0,"unit": "string"} ]" 
} 

У меня нет проблем, может кто-нибудь прояснить это мне, пожалуйста?

+0

Откройте запрос почтальона и попросите его сгенерировать код для запроса. Выберите cURL как язык и подтвердите его против вашего запроса Swagger – Daniel

ответ

0

Проблема с запросом Swagger заключалась в том, что он отправил мои данные в двойные кавычки, из-за чего он не может быть проверен как JSON и может быть получен только из ввода php: // в виде строки. Я решил проблему, просто используя свои собственные запросы на завивки, где я либо помещал данные JSON в одинарные кавычки, либо прикреплял их как внешний файл.

curl -X POST -d @foo/bar/contractsPayload.json http://backend.mywebsite.de/v1/stocks -H 'Content-Type: application/json' -H 'Accept:application/json'