symfony - 将请求正文自动连接到控制器
问题描述
我正在寻找一种干净简单的方法来将 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"
}
解决方案
我最近以几种不同的方式做到了这一点。
joipolloi/json-validation-bundle侦听FilterControllerEvent
(一个预控制器操作钩子),然后检查具有模式路径的注释,以检查传入的 POST 请求。
我还用一个简单的 ParamConverter 完成了它,我在其中键入提示将接收解码的 json 的特定对象(或专门命名的数组)(假设有 json POST 内容)。
无论哪种方式,它都是从请求的正文内容中解码出来的,并放入一个动作参数中。
推荐阅读
- kotlin - 暴露的 SQL 日期时间查询条件
- python - 在 Pandas 数据框中使用 JSON 数据规范化列
- c# - Do While 循环中的随机数
- python - Tkinter:输出小部件不显示文本
- scala - ZIO [声明式] 事务管理
- javascript - 如何为 nextJS 创建静态生成的标头
- html - 在画布中一一着色矩形
- jsf - 使用 org.omnifaces.cdi.ViewScoped 时,我的 javax.servlet.Filter 在单个页面视图上同时接收到 GET 和 POST
- android - 这里有什么问题?为什么代码中出现红色下划线?
- flutter - 如何设置标签栏颤动的样式