константин
New member
- Регистрация
- 1 Янв 2025
- Сообщения
- 4
- Реакции
- 0
Не в сети
привет , настройки бы для nginx )) ото думаю из за этого в место api проста страница открывается )) если у каго то есть напишите плиз , если сам найду тоже напишу ))
Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Я не знаком с nginx, но это должно помочьпривет , настройки бы для nginx )) ото думаю из за этого в место api проста страница открывается )) если у каго то есть напишите плиз , если сам найду тоже напишу ))
спасибо большой за подсказку и за то что отписались )) пробовал этот вариант не помогло ))) я нанял програмиста опытного в nginx посмотрим что будет ))) там не проста оказалось с этим ))) если получется скину код ))Я не знаком с nginx, но это должно помочь
[CODE lang="nginx" title="nginx"]location /api/ {
try_files $uri /index.php?$args;
}
[/CODE]
utf8mb4
.dle_admin_logs
.dle_admin_sections
.
- [FIX] Исправлена заявленная ошибка для запросов POST & PUT
- [UPDATE] Обновлено до версии DLE 17.3
- [UPDATE] Обновлено до версии PHP 8.3 (Она же является минимальной)
- [UPDATE] Переструктурирована сама логика работы с CRUD запросами
- Обновление совместимости:
- Поддержка DLE 17 и MySQL версии 5.7.
- Улучшение проверки маршрутизации:
- Добавлена проверка запрещенных маршрутов.
- Обеспечение существования запиваемого маршрута его подключением.
- Парсинг тела запроса:
- Внедрение middleware для маршрутизации в API.
- Оптимизация кода:
- Удалены неиспользуемые импорты в файле маршрутов post.
- Исправление...
- Исправление: Устранены мелкие проблемы с маршрутизацией, что улучшает стабильность работы приложения.
- Обновление: Изменён класс работы с базой данных на illuminate/database, что позволяет использовать более современные подходы к взаимодействию с базой данных.
- Обновление: Пересмотрен подход к маршрутизации, что улучшает структуру и читаемость кода.
- Нововведение: Добавлен новый маршрут для поиска по значениям /search/{db_table}. Подробности можно...
- [FIX] Исправление вывода множества записей при запросе метода GET
- [UPDATE] Обновлены зависимости
- [FIX] Исправление вывода множества записей при запросе метода GET
- [UPDATE] Обновлены зависимости
- [FIX] Исправление вывода множества записей при запросе метода GET
- [UPDATE] Обновлены зависимости
При разработке мобильного приложения тоже столкнулся с отсутсвием пагинации в API. Решил сам добавить ключ offset. Кому интересно можете потестить.Добрый день. Подскажите, а как правильно совершить запрос на поиск той или иной новости? В Postman не нашел ничего подобно. Аналогично и по пагинации
/**
* Разбирает параметры запроса, извлекая требуемые значения.
*
* @param array $params Массив параметров запроса, обычно из query string.
* @param array $header Массив параметров заголовков запроса.
*
* @return array Массив из четырёх значений:
* - Значение параметра "orderby" (или замена по умолчанию).
* - Значение параметра "sort" (или замена по умолчанию).
* - Значение параметра "limit" (или null, если не указано).
* - Значение параметра "offset" (или null, если не указано).
*/
public function parseParameters(array $params, array $header): array {
$orderBy = $this->findParameter('orderby', $this->orderBy, $params, $header);
$sort = $this->findParameter('sort', $this->sort, $params, $header);
$limit = $this->findParameter('limit', null, $params, $header);
$offset = $this->findParameter('offset', null, $params, $header);
return [$orderBy, $sort, $limit, $offset];
}
/**
* Обрабатывает GET-запрос, извлекает данные из базы данных с учетом фильтров и прав доступа,
* возвращает результат в формате JSON.
*
* @param ServerRequestInterface $request Запрос от клиента.
* @param ResponseInterface $response Ответ для клиента.
* @param array $args Массив аргументов маршрута.
*
* @return ResponseInterface Ответ с данными или сообщением об ошибке.
*
* @throws \Error|\JsonException Если возникает ошибка при проверке API-ключа или построении SQL-запроса.
*/
public function handleGet(ServerRequestInterface $request, ResponseInterface $response, array $args): ResponseInterface {
$header = $this->parseHeader($request);
$params = $request->getQueryParams() ?: [];
[$orderBy, $sort, $limit, $offset] = $this->parseParameters($params, $header); // Добавляем offset
$api_key = $this->extractApiKey($params, $header);
$checkAccess = checkAPI($api_key, $this->table);
if (isset($checkAccess['error'])) {
return ErrorResponse::error($response, 405, $checkAccess['error']);
}
$this->access['full'] = $checkAccess['admin'];
$this->access['can_read'] = $checkAccess['read'];
$this->access['own_only'] = $checkAccess['own'];
if ($this->access['full'] || $this->access['can_read']) {
$limitClause = $limit ? "LIMIT " . (int)$limit : '';
$offsetClause = ($offset !== null && $limit) ? "OFFSET " . (int)$offset : ''; // Добавляем OFFSET, только если указан limit
$possibleParams = '';
$filters = $this->buildFilters($header);
$accessFilters = $this->buildAccessFilters();
if (count($filters)) $possibleParams = 'WHERE ' . implode(' AND ', $filters);
if (count($accessFilters)) {
if (strlen($possibleParams)) {
$possibleParams .= 'WHERE ' . implode(' OR ', $accessFilters);
} else {
$possibleParams .= ' AND (' . implode(' OR ', $accessFilters) . ')';
}
}
} else {
return ErrorResponse::error($response, 405);
}
$sql = "SELECT * FROM {$this->prefix}_{$this->table} {$possibleParams} ORDER BY {$orderBy} {$sort} {$limitClause} {$offsetClause}";
$getData = new CacheSystem($this->table, $sql);
if (check_response($getData->get())) {
$data = $this->db::select($sql, []);
$getData->setData($data);
$data = $getData->create();
} else {
$data = $getData->get();
}
return ErrorResponse::success($response, $data, 200);
}
Slim Application Error
The application could not run because of the following error:
Details
Type: TypeError
Code: 0
Message: fwrite(): Argument #2 ($data) must be of type string, stdClass given
File: \home\user\site.com\api\vendor\slim\psr7\src\Stream.php
Line: 333
Добавлю по умолчанию в следующем релизеПри разработке мобильного приложения тоже столкнулся с отсутсвием пагинации в API. Решил сам добавить ключ offset. Кому интересно можете потестить.
Изменив эти два метода, появится возможность использования ключа offset, а следовательно загружать новости порционно.
Гляну, что там передаётсяmust be of type string, stdClass given