如何在YAML中定义自定义POST操作?
在我的api-platform项目中,我想创建一个自定义POST
操作。虽然使用注释路由的效果很好,但我使用YAML卡住了。如何在YAML中定义自定义POST操作?
API资源定义
# src/AppBundle/Resources/config/api_resources/resources.yml
AppBundle\Entity\Foo:
collectionOperations:
get:
method: 'GET'
special:
route_name: 'foo_special'
路由
# app/config/routing.yml
foo_special:
path: '/foo/special'
methods: ['POST']
defaults:
_api_resource_class: 'AppBundle\Entity\Foo'
_api_collection_operation_name: 'special'
错误消息:
“水螅:描述”: “无法找到路径\控制器”/富/特殊\“,路由配置错误。”
任何想法这里有什么错?
如果使用ADR模式(
Action
类+__invoke()
方法),你必须定义你的控制器(或在这里你的行动)作为一个服务,然后使用该服务的名称作为控制器。 (即_controler: app.special_action
或_controller: AppBundle\Action\Special
)。也可以使用注释,请参见https://api-platform.com/docs/core/operations#creating-custom-operations-and-controllers。
defaults:
_controller: 'AppBundle:Foo:special'
_api_resource_class: 'AppBundle\Entity\Foo'
_api_collection_operation_name: 'special'
感谢您使用此代码段,这可能会提供一些有限的即时帮助。一个[正确的解释将大大提高其长期价值](/ meta.stackexchange.com/q/114762/350567)通过显示*为什么*这是一个很好的解决方案,并会使它对未来更有用有其他类似问题的读者。请[编辑]你的答案以添加一些解释,包括你所做的假设。 – iBug
有点解释会很棒。 –
在YAML中没有自定义的POST操作。就像在ASCII或UTF-8中没有这样的操作一样。解释ASCII字符的含义,即使是组合成YAML标量也是由应用程序完成的。 – Anthon
这非常有帮助。谢谢澄清! –