【发布时间】:2018-12-11 09:05:13
【问题描述】:
我正在尝试在 Api 平台中创建自定义操作/控制器/操作。
基本上,我需要在 Swagger 中记录的自定义操作,但不是 ApiResource,因为操作接收的 JSON 正文在数据库中没有相应的实体。
身体看起来像这样:
[
{
"someEntityId": "2",
"message": "test message",
"userId": "11"
},
{
"someEntityId": "8",
"message": "test message two",
"userId": "16"
}
]
正如我所说,我不能拥有ApiResource,因为这会破坏 REST 原则,并且具有这些字段的实体不存在。我正在使用这些数据来执行一些自定义业务逻辑,并且这个 JSON 被反序列化为 DTO,准确地说是 DTOs 的集合。
至少我认为,带有路由的常规 Symfony 控制器应该是可行的方法,但即使带有控制器注释,我也无法让这条路由显示在 Swagger 中。
我试过了:
/**
* @Route(
* methods={"POST"},
* name="api_post_notify_users",
* path="/api/users/notify_users",
* )
* @SWG\Post(
* path="/api/users/notify_users",
* summary="Summary",
* description="Description",
* produces={"application/json"},
* @SWG\Response(
* response=200,
* description="Success",
* )
* )
* @return Response
*/
public function __invoke()
{
$data = $this->get('request_stack')->getCurrentRequest()->getContent();
return new Response($data);
}
不知道我错过了什么。此外,有没有办法根据DTO 验证这个 JSON 数组,以确保 JSON 中的所有字段都被发送。
非常感谢任何帮助!
【问题讨论】:
-
你是怎么做到的?你能在这里发布解决方案吗?
标签: symfony swagger swagger-ui api-platform.com