Api platform.com API平台中的多种操作方法
我正在编写一个自定义操作,我需要将它同时用于Api platform.com API平台中的多种操作方法,api-platform.com,Api Platform.com,我正在编写一个自定义操作,我需要将它同时用于GET(collection)和POST方法 我的注释如下所示 /** * @Route( * name="api_entity_custom", * path="/entity/custom", * defaults={ * "_api_resource_class"=Entity::class, * "_api_collection_operation_name"="EntityCustom"
GET
(collection)和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 in文档(招摇过市)
如果我更改顺序,则会看到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'
您可以通过以下方式执行此操作:
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 ...
}
您可以通过以下方式执行此操作:
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 ...
}
这里的问题是,两个操作使用相同的名称。但是,路由的名称必须是唯一的。否则,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 ...
}
这里的问题是,两个操作使用相同的名称。但是,路由的名称必须是唯一的。否则,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 ...
}