首页 > 解决方案 > 将请求正文自动连接到控制器

问题描述

我正在寻找一种干净简单的方法来将 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"
}

标签: symfonysymfony4autowired

解决方案


我最近以几种不同的方式做到了这一点。

joipolloi/json-validation-bundle侦听FilterControllerEvent(一个预控制器操作钩子),然后检查具有模式路径的注释,以检查传入的 POST 请求。

我还用一个简单的 ParamConverter 完成了它,我在其中键入提示将接收解码的 json 的特定对象(或专门命名的数组)(假设有 json POST 内容)。

无论哪种方式,它都是从请求的正文内容中解码出来的,并放入一个动作参数中。


推荐阅读