Autowire запрос тела к контроллеру - PullRequest
0 голосов
/ 22 сентября 2019

Я ищу чистый и простой способ автоматически связать тело запроса POST в качестве аргумента действия контроллера и одновременно десериализовать его, если установлено application/json.

Я смотрел насобытия или ParamConverter, но ни один из них не подходит для этой цели.

Я бы использовал его как ярлык, чтобы избежать использования объекта Request.

Например:

POST /api/v1/admin/category HTTP/1.1
Host: localhost:8000
Authorization: Bearer token
Content-Type: application/json
Cache-Control: no-cache

{
    "name": "frombody"
}
public function createCategoty(array $body) {
    $body['name'] -> equals "frombody"
}

1 Ответ

0 голосов
/ 22 сентября 2019

Недавно я сделал это несколькими способами.

joipolloi / json-validation-bundle прослушивает FilterControllerEvent (ловушка предварительного действия контроллера), а затем проверяет аннотацию, имеющую путь к схеме для проверкивходящий POST-запрос против.

Я также сделал это с помощью простого ParamConverter, где я набираю подсказку для определенного объекта (или специально названного массива), который получит декодированный json (при условии, что есть содержимое JSON POST).).

В любом случае, он декодируется из содержимого тела запроса и помещается в параметр действия.

...