настройка core_user_create_user и веб-сервиса moodle не работает

#moodle #moodle-api

Вопрос:

Я сделал все необходимое для настройки веб-сервисов в своем экземпляре moodle 3.11, включая роли/возможности/пользователя. Однако отправка тестового запроса всегда дает { «исключение»: «dml_missing_record_exception», «код ошибки»: «недействительная запись», «сообщение»: «Не удается найти запись данных в таблице базы данных external_functions».}

URL-адрес для доступа к нему имеет формат https:///moodle/webservice/rest/server.php?wsfunction=core_user_create_useramp;service=mymoodleusermanageamp;moodlewsrestformat=jsonamp;users[0][username]=ABCamp;users[0][firstname]=VPTestamp;users[0][lastname]=Noneamp;users[0][email]=mail@xxx.comamp;users[0][password]=xxxxxamp;users[0][auth]=manualamp;wstoken=xxxxxxxxxxxxxx

Параметр службы правильно установлен на короткое имя службы. Должна ли служба быть определена где-либо дополнительно, кроме Администрирования сайта->Сервер->>Веб-службы — >>>Внешние службы — >>>>Пользовательские службы

Спасибо за любую помощь, которую можно оказать

Ответ №1:

Ответ очень прост — вы пытаетесь вызвать несуществующую функцию веб-сервиса (отсюда и сообщение об ошибке о невозможности найти запись базы данных для функции в таблице базы данных external_functions).

Если вы посмотрите в коде Moodle: https://github.com/moodle/moodle/blob/master/lib/db/services.php#L1717 вы увидите, что функция называется core_user_create_users — с буквой «s» в конце.

Если вы добавите эту дополнительную букву «s» в параметры URL, которые вы используете, то это должно сработать.

Комментарии:

1. Большое спасибо. Это решило проблему.