首页 > 解决方案 > Api平台,route_name参数要输入什么?

问题描述

我想在 symfony 4 的 api-platform 中编写自己的控制器。GET 操作出错:  

NotFoundHttpException HTTP 404 未找到 未找到

在后期操作中我有一个错误:

应用程序的应用程序设置了例外。(任一路线)。配置/路由/api_platform.yaml)。确保有一个支持 api_platform 类型的加载器。

这是代码:

    @ApiResource(itemOperations={
 *     "post",
 *     "special"={"route_name"="user_method_special"}
 *     })
 */
class Users

用户控制器:

class UserController extends Controller implements AuthenticatedController
{

    public function userMethod(Request $request)
    {
        $userId = $request->get('user_id');
        $method = $request->get('method');

        $em = $this->getDoctrine()->getManager();
        $userRepository = $em->getRepository(Users::class);
        $user = $userRepository->findOneBy(['userId' => $userId]);

        $userModel = new UserModel($em);

        if (!$method) {

            if (!$user) {
                return new JsonResponse(['message' => 'Brak oraz userId: ' . $userId], Response::HTTP_NOT_FOUND, ['content-type'=>'application/json']);
            }
            $account = $userModel->getMethod($userId);
        }

            $method = str_replace(' ', '', $method);
            $acclen = strlen($method);

            $account = $userModel->parseMethod($method, $acclen, $userId, $replaceZeros);

            //return new JsonResponse([ 'data' => FormatModel::formatMethod($method, $format)], Response::HTTP_OK, ['content-type'=>'application/json']);
            return FormatModel::formatMethod($method, $format);
        }
}

和 routes.yaml:

user_method:
  path: '/user-method'
  methods: ['POST']
  defaults:
    _controller: '\App\Controller\UserController::userMethod'
    _api_resource_class: 'App\Entity\Users'
    _api_item_operation_name: 'special'

我究竟做错了什么?

我想返回一个取自教义的值。

编辑:当我更改定义 route_name = user_method 时,POST 方法出现错误:

处理异常时抛出的异常(Symfony\Component\Config\Exception\FileLoaderLoadException:对于资源“App\Entity\Users”的操作“post”,必须存在“route_name”或“method”操作属性。(正在从“D:\xampp\htdocs\api\config/routes/api_platform.yaml”导入)。确保有一个支持“api_platform”类型的加载器。)

标签: phpsymfonydoctrine-ormapi-platform.com

解决方案


您的操作定义和路由定义中的路由名称不匹配:

user_method _special vs user_method

顺便说一句,您用于创建自定义操作的方法不是推荐的方法:https ://api-platform.com/docs/core/operations/#recommended-method


推荐阅读