Платформа api, что вводить в параметре route_name?

Я хотел бы написать свой собственный контроллер в API-платформу для Symfony 4.
Ошибка с операцией GET:

NotFoundHttpException HTTP 404 не найден не найден

А с почтовой операцией у меня ошибка:

Исключение было установлено для применения приложения.
(Либо маршрут). config / маршруты / api_platform.yaml). Удостовериться
есть загрузчик, поддерживающий тип api_platform.

вот код:

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

UserController:

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);
}
}

и rout.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: либо
«имя_путешествия» или атрибут метода «метод» должен существовать для
операция «post» ресурса «App \ Entity \ Users» в. (который
импортируется из
«D: \ XAMPP \ HTDOCS \ апи \ Config / маршруты / api_platform.yaml»). Удостовериться
есть загрузчик, поддерживающий тип «api_platform».)

0

Решение

Код выше является переменной $ account.
Вместо этого должен быть метод $, а переменная $ replaceZeros не должна быть вообще.

0

Другие решения

Имя маршрута в вашем определении операции и в вашем определении маршрутизации не совпадает:

user_method_специальный против user_method

Кстати, метод, который вы используете для создания пользовательских операций, не рекомендуется: https://api-platform.com/docs/core/operations/#recommended-method

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector