Платформа api, что вводить в параметре route_name? - PullRequest
0 голосов
/ 03 июля 2018

Я бы хотел написать свой собственный контроллер на платформе 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'

что я делаю не так?

Я бы хотел вернуть одно значение, взятое из доктрины.

Edit: Когда я изменил определение route_name = user_method, у меня возникла ошибка с методом POST:

Исключение, возникающее при обработке исключения (Symfony \ Component \ Config \ Exception \ FileLoaderLoadException: либо «имя_путешествия» или атрибут метода «метод» должен существовать для операция "post" ресурса "App \ Entity \ Users" в. (который импортируется из "D: \ XAMPP \ HTDOCS \ апи \ Config / маршруты / api_platform.yaml"). Удостовериться есть загрузчик, поддерживающий тип "api_platform".)

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

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

user_method _special против user_method

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

0 голосов
/ 03 июля 2018

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

...