Я скачал 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 в файле modules / 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
Других решений пока нет …