Гудл 6, поставь запрос и описание json

Я использую guzzle 6 с файлом json, чтобы описать вызываемые мной методы.

Ниже, пример с запросом на размещение:

в файле дескриптора json:

"putObjects" : {
    "httpMethod": "PUT",
    "uri": "objects",
    "summary": "Send objects to the api",
    "parameters": {
        "objects" : {
            "type" : "string",
            "location" : "body"
        }
    }
}

в контроллере Symfony:

$clientResponse = $client->execute(
    $client->getCommand("putObjects", array(
        'objects'       => $request->getContent()
    ))
);

Раньше, с guzzle 3, когда отправлялся запрос на размещение, отправляемые данные были сформированы следующим образом (действительный json):

{объекты: [{....}]}

Но теперь, с guzzle 6, данные форматируются как:

objects = {объекты: [{....}]}

И, конечно же, мой api отправляет мне сообщение об ошибке «Получено недопустимое сообщение json».

У кого-то есть представление об этой проблеме?


person chaillouvincent    schedule 22.02.2018    source источник


Ответы (1)


Я нашел решение.

В контроллере Symfony:

$content = json_decode($request->getContent(), true);

$clientResponse = $client->execute(
    $client->getCommand("putObjects", array(
        'objects'       => $content['objects']
    ))
);

В файле дескриптора json:

"putObjects" : {
    "httpMethod": "PUT",
    "uri": "objects",
    "summary": "Send objects moderated",
    "parameters": {
        "objects" : {
            "type" : "array",
            "location" : "json"
        },
    }
}
person chaillouvincent    schedule 22.02.2018