我正在寻找一种干净简单的方法来自动连接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"
}
答案 0 :(得分:-1)
最近我做了几种不同的方式。
joipolloi/json-validation-bundle侦听FilterControllerEvent
(控制器前动作挂钩),然后检查注释,该注释具有用于检查传入POST请求的架构路径。
我还用一个简单的ParamConverter完成了该操作,在其中我键入了一个特定对象(或专门命名的数组)的类型提示,该对象将接收解码后的json(假设有json POST内容)。
无论哪种方式,它都会从请求的正文内容中解码出来,并放入一个动作参数中。