Я загрузил Live Helper Chat (приложение с открытым исходным кодом, созданное на PHP) отсюда: https://livehelperchat.com/, и я пытался добавить настраиваемую конечную точку в REST API, который построен на Swagger 2.0.
Пока я
1) Добавлен путь в swagger.json вот так:
"/restapi/myendpoint/{user_id}": {
"get": {
"tags": [
"user"
],
"summary": "",
"description": "",
"produces": [
"application/json"
],
"parameters": [
{
"name": "user_id",
"in": "path",
"description": "User ID",
"required": true,
"type": "string",
"format": "int32"
}
],
"responses": {
"200": {
"description": "",
"schema": {
}
},
"400": {
"description": "Error",
"schema": {
}
}
},
"security": [
{
"login": []
}
]
}
}
2) создал файл с именем myendpoint.php в модулях / lhrestapi:
<?php
try {
erLhcoreClassRestAPIHandler::validateRequest();
$user = erLhcoreClassModelUser::fetch((int) $Params['user_parameters']
['user_id']);
if ($user instanceof erLhcoreClassModelUser) {
$db = ezcDbInstance::get();
echo json_encode(array('error' => false, 'result' => array('msg' =>
'Status changed', 'online' => $user->hide_online == 0)));
} else {
throw new Exception('User could not be found!');
}
} catch (Exception $e) {
echo erLhcoreClassRestAPIHandler::outputResponse(array(
'error' => true,
'result' => $e->getMessage()
));
}
exit();
и
3) добавил это в lhrestapi \ module.php:
$ViewList['myendpoint'] = array(
'params' => array('user_id')
);
Когда я пробую эту конечную точку, я получаю код 302 (перенаправление на /index.php/), как будто маршрута не существует.
Насколько я могу судить по другим конечным точкам в API, этих изменений должно быть достаточно, чтобы получить новую конечную точку.
Примечание. Я также попытался изменить путь одного из существующих путей внутри swagger.json, и конечная точка по-прежнему работает со старым путем. Я начинаю думать, что есть какая-то команда, которую мне нужно запустить для обновления API, поскольку простое редактирование файла swagger.json, похоже, не имеет абсолютно никакого эффекта. С другой стороны, я уверен, что в добавленном мной коде нет синтаксических ошибок.
Есть идеи, что я делаю неправильно?






Нашел ответ: при внесении изменений кеш нужно очистить или вообще отключить при разработке. Подробнее здесь: https://livehelperchat.com/article/view/40