rest - 具有自定义参数的 API 平台自定义操作

标签 rest api symfony api-platform.com

我刚开始使用 dunglas api 平台。我使用的是 v2.0.0-rc1,我添加了一个自定义操作来启用/禁用用户。

这是我为用户自定义的操作

<?php

namespace Zoef\UserBundle\Action;

use Zoef\UserBundle\Entity\User;
use Doctrine\Common\Persistence\ManagerRegistry;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\Routing\Annotation\Route;

class UserAction
{
    /**
     * @Route(
     *     name="enabled_user",
     *     path="/users/{id}/enabled",
     *     defaults={"_api_resource_class"=User::class, "_api_item_operation_name"="enabled"}
     * )
     * @Method("PUT")
     */
    public function __invoke(User $user)
    {
        if($user->isEnabled()) {
            $user->setEnabled(false);
        } else {
            $user->setEnabled(true);
        }

        return $user;
    }
}

当我转到我的文档时,自定义操作已添加并正常运行,但要使用此操作,我需要发送 4 个参数:电子邮件、全名、用户名、已启用。但我只想发送已启用的参数,用户的 ID 在路由中给出,但我无法在文档中找到如何更改参数。

有人可以帮我解决这个问题吗?

最佳答案

我试图启用/禁用相同的功能,我是这样做的:

我在 AppBundle\Controller\AddressController 中创建了一个自定义 Controller

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class AddressController extends Controller
{
    public function enableAction($data)
    {
        $data->setActive(true);

        $em = $this->getDoctrine()->getManager();
        $em->persist($data);
        $em->flush();

        return $data;
    }
}

在我的 routing.yml 中我有:

address_enable:
    path:     '/addresses/{id}/enable'
    methods:  ['PUT']
    defaults:
            _controller: 'AppBundle:Address:enable'
            _api_resource_class: 'AppBundle\Entity\Address'
            _api_item_operation_name: 'enable'

在我的实体中,我有:

 * @ApiResource(
 *     itemOperations={
 *          "enable"={"route_name"="address_enable"},
 *     }
 * )

然后我只是将它作为 URL/addresses/123/enable 发送,不需要发送更多参数,只需发送 id。

关于rest - 具有自定义参数的 API 平台自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868117/

相关文章:

c# - 序列化嵌套的json c#

java - REST JAX-RS 日志记录

javascript - 当我的 API key 在 .gitignore 文件中时,如何从 git 部署到 heroku?

sql - symfony2 - Doctrine - 如何使用计数和分组进行多重选择

mysql - Doctrine DQL - 预期字符串结尾,得到 'inner'

java - 如何从 hibernate 中同一个表的结果中获取表中的数据

c# - 当我知道 Rally 中存在项目时,为什么使用用户故事名称和迭代进行查询会返回零项目?

ruby-on-rails - 服务器端图像缓存

java - Android Google map V2 - 项目已停止工作

PHP Doctrine : object toArray() method