1

在我的api-platform项目中,我想创建一个自定义POST操作。虽然使用路由注释可以很好地工作,但我在使用 YAML 时遇到了困难。

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'

错误信息:

"hydra:description": "找不到路径 \"/foo/special\" 的控制器。路由配置错误。"

任何想法这里有什么问题?

4

2 回答 2

0

在 github 上引用meyerbaptiste 的话:

如果使用 ADR 模式(Action类 +__invoke()方法),则必须将控制器(或此处的操作)定义为服务,然后将服务名称用作控制器。(即_controler: app.special_action_controller: AppBundle\Action\Special)。

您也可以使用注释,请参阅https://api-platform.com/docs/core/operations#creating-custom-operations-and-controllers

于 2017-06-22T09:17:46.720 回答
0
defaults:
        _controller: 'AppBundle:Foo:special'
        _api_resource_class: 'AppBundle\Entity\Foo'
        _api_collection_operation_name: 'special'
于 2018-02-20T03:53:25.970 回答