我正在编写一个自定义操作,我需要使它可用于GET
(集合)和POST
方法。
我的注释看起来像这样。
/**
* @Route(
* name="api_entity_custom",
* path="/entity/custom",
* defaults={
* "_api_resource_class"=Entity::class,
* "_api_collection_operation_name"="EntityCustom"
* }
* )
* @Method("GET")
*/
这适用于GET,但是当我添加POST时,我只会在文档中看到GET(摇晃)
@Method({"GET", "POST"})
如果更改顺序,则会看到POST
但看不到GET
@Method({"POST", "GET"})
是否可以这样做?怎么样?
编辑: 我正在使用这样的结构
//Path/To/Entity/Action/EntityCustomAction.php
class EntityCustomAction
{
/**
* @Route(
* name="api_entity_custom",
* path="/entity/custom",
* defaults={
* "_api_resource_class"=Entity::class,
* "_api_collection_operation_name"="EntityCustom"
* }
* )
* @Method("GET")
*/
public function __invoke($data)
{
...
已在路由中启用
entity:
resource: '@EntityBundle/Action/'
type: 'annotation'
答案 0 :(得分:0)
您可以通过以下方式进行操作:
Action 1:
/**
* @Route("/data/save", name="data_save")
* @Method({"GET"})
* @Template()
*/
public function dataSaveViewAction()
{
// code here...
}
Action 2:
/**
* @Route("/data/save", name="data_save")
* @Method({"POST"})
*/
public function dataSaveAction(Request $request)
{
// code here ...
}
答案 1 :(得分:0)
这里的问题是两个操作都使用相同的名称。但是,路由名称必须唯一。如果没有,API平台将不会显示它。您应该执行以下操作:
Action 1:
/**
* @Route("/data/save", name="data_save_get") // Choose a unique name
* @Method({"GET"})
* @Template()
*/
public function dataSaveViewAction()
{
// code here...
}
Action 2:
/**
* @Route("/data/save", name="data_save_post") // same here
* @Method({"POST"})
*/
public function dataSaveAction(Request $request)
{
// code here ...
}