gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:18:00 25 4
gpt4 key购买 nike

我刚开始使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com