Конечные точки DBGate
Содержание
- Введение
- Конечные точки API
- Конечные точки страниц редактирования
- Конечные точки домашних страниц
- Конечные точки страниц аутентификации
- Конечные точки операций аутентификации
- Конечные точки управления приложением
- Статические файлы
Введение
Конечные точки можно разделить на три основные категории:
- Статические файлы
- Конечные точки управления приложением
- Конечные точки на основе подключений
Конечные точки подключений включают следующие типы:
- Конечные точки API
- Конечные точки страниц редактирования
- Конечные точки домашних страниц
- Конечные точки страниц аутентификации
- Конечные точки операций аутентификации
DBGate создает наборы конечных точек для каждого подключения, определенного в файле appsettings.
Например, файл appsettings.json
может выглядеть так:
{ "ConnectionStrings": { "mssql": { "ProviderName": "System.Data.SqlClient", "ConnectionString": "Data Source=.\\SQLEXPRESS;Initial Catalog=master;User ID=user;Pwd=pass" } } }
DBGate создаст следующие конечные точки:
- https://dbgate/api/mssql/
- https://dbgate/edit/mssql/
- https://dbgate/home/mssql/
- https://dbgate/login/mssql
- https://dbgate/auth/mssql/
В этом примере api
, edit
, home
, login
и auth
являются корневыми сегментами.
Имена корневых сегментов можно изменить в файле appsettings.
Корневые сегменты и сегменты подключений
По умолчанию, DBGate поддерживает два формата конечных точек:
- https://dbgate/api/mssql/
- https://dbgate/mssql/api/
Можно выбрать только один формат, установив настройку ConnectionSegment
в файле appsettings.
Сегмент языка
DBGate позволяет указать желаемый язык в URL следующим образом:
- https://dbgate/edit/mssql/en-us/
- https://dbgate/edit/mssql/ru-ru/
Клиент JavaScript использует культуру для загрузки языковых ресурсов и форматирования чисел и дат.
Клиент JavaScript выполняет запросы к серверу, передавая указанный язык. Например:
- https://dbgate/api/mssql/en-us/
- https://dbgate/api/mssql/ru-ru/
DBGate использует культуру для перевода модели (имена, комментарии и т.д.), если эта возможность поддерживается базой данных.
Также DBGate передает значения языка в параметры хранимых процедур, указанные в настройке LanguageParameters
, что позволяет возвращать данные на нужном языке.
См. подробности в Руководстве разработчика.
Языковые папки
В каталоге wwwroot
можно создать подкаталоги для языков, например, en-us
, ru-ru
, zh-hans
и т.д.
DBGate ищет файлы в этих папках в зависимости от культуры, указанной в URL.
Например, для запроса /edit/mssql/ru-ru/
будет загружен edit.htm
из wwwroot
, если его нет в ru-ru
. Для /edit/mssql/zh-cn/
будет загружен существующий файл wwwroot/zh-hans/edit.htm
(для стандартного пакета поставки).
Для статического файла, например, /zh-cn/sample01.htm
, будет загружен wwwroot/en-us/sample01.htm
, а для /ru-ru/sample01.htm
— существующий wwwroot/ru-ru/sample01.htm
.
Папку языка по умолчанию можно задать в настройке DefaultLanguageFolder
.
Сегменты контейнера
По умолчанию, DBGate включает в модель сервиса все объекты базы данных, доступные пользователю.
DBGate создает контейнер default
.
Контейнер можно указать в третьем сегменте.
Следующие URL используют одну и ту же модель:
- https://dbgate/api/mssql/
- https://dbgate/api/mssql/default/
- https://dbgate/api/mssql/default/en-us/
Разработчики могут создать специальные представления (например, QueryList) для отображения только определенных объектов, таких как buyer
и seller
. В этом случае DBGate позволяет использовать такие представления как контейнеры:
- https://dbgate/api/mssql/buyer/
- https://dbgate/api/mssql/seller/
В обоих случаях модель включает все объекты, доступные пользователю, но сервисные документы содержат только объекты из представлений QueryList.
См. подробности в Руководстве разработчика.
Конечные точки API
Конечные точки API возвращают сервисные документы, метаданные и данные в соответствии со стандартами OData, а также расширенные настройки.
DBGate создает конечные точки для каждого подключения, указанного в файле appsettings.
Формат конечных точек (корень в первом сегменте):
<domain>
/<API root>
/<connection name>
/<domain>
/<API root>
/<connection name>
/<container name>
/<domain>
/<API root>
/<connection name>
/<container name>
/<language>
/<domain>
/<API root>
/<connection name>
/<language>
/
Как указано выше, можно менять местами корень и подключение.
Корень по умолчанию — api
. Имя корня можно изменить в свойстве ApiRoot
файла appsettings.
Примеры конечных точек:
- https://dbgate.savetodb.com/api/mssql-023/
- https://dbgate.savetodb.com/api/mssql-023/default/
- https://dbgate.savetodb.com/api/mssql-023/default/ru-ru/
- https://dbgate.savetodb.com/api/mssql-023/ru-ru/
Эти конечные точки возвращают сервисные документы.
Для получения метаданных сервиса добавьте сегмент $metadata
.
Для получения данных добавьте имя объекта.
Например:
- https://dbgate.savetodb.com/api/mssql-023/cashbook
- https://dbgate.savetodb.com/api/mssql-023/usp_cashbook
DBGate поддерживает следующие расширения (в последнем сегменте): $excel_formats
, $excel_format
, $table_format
, $workbooks
, $definition
.
$definition
возвращает определение объекта (если у пользователя есть разрешение VIEW DEFINITION
).
Например, https://dbgate.savetodb.com/api/mssql-023/usp_cashbook/$definition.
Другие расширения требуют настройки в базе данных.
См. онлайн примеры и подробности в Руководстве разработчика.
Конечные точки страниц редактирования
Эти конечные точки возвращают страницы для просмотра и редактирования данных.
DBGate создает конечные точки для каждого корня, указанного в секции EditRoots
файла appsettings, по следующим шаблонам:
<domain>
/<edit root>
/<connection name>
/<domain>
/<edit root>
/<connection name>
/<container name>
/<domain>
/<edit root>
/<connection name>
/<container name>/<language>
/<domain>
/<edit root>
/<connection name>
/<language>
/
Как указано выше, можно менять местами корень и подключение.
Например:
- https://dbgate.savetodb.com/edit/mssql-023/
- https://dbgate.savetodb.com/edit/mssql-023/cashbook
- https://dbgate.savetodb.com/edit/mssql-023/usp_cashbook
Первый URL отображает все объекты из сервисного документа. Другие URL отображают данные заданных объектов.
Корень и страница по умолчанию — edit
и edit.htm
. Можно настроить другие корни с соответствующими страницами.
Страницы редактирования используют значение window.location.href для расчета URL API.
Для приведенных выше URL страницы редактирования вызывают следующие URL:
- https://dbgate.savetodb.com/api/mssql-023/
- https://dbgate.savetodb.com/api/mssql-023/cashbook
- https://dbgate.savetodb.com/api/mssql-023/usp_cashbook
Конечные точки домашних страниц
Эти конечные точки перенаправляют на страницы сервисного документа или страницы, указанные в настройке Home
подключения.
Клиент JavaScript вызывает эти конечные точки по нажатию кнопки Домашняя страница
.
DBGate создает конечные точки для каждого подключения, указанного в файле appsettings, по следующим шаблонам:
<domain>
/<home root>
/<connection name>
/<domain>
/<home root>
/<connection name>
/<container name>
/<domain>
/<home root>
/<connection name>
/<container name>/<language>
/<domain>
/<home root>
/<connection name>
/<language>
/
Как указано выше, можно менять местами корень и подключение.
Имя корня можно настроить в свойстве HomeRoot
файла appsettings.
Конечные точки страниц аутентификации
Эти конечные точки возвращают страницы для ввода имени и пароля пользователя.
Страницы используют конечные точки операций аутентификации, описанные ниже.
DBGate создает конечные точки для каждого корня, указанного в секции LoginRoots
файла appsettings, по следующим шаблонам:
<domain>
/<login root>
/<connection name>
/<domain>
/<login root>
/<connection name>
/<container name>
/<domain>
/<login root>
/<connection name>
/<container name>/<language>
/<domain>
/<login root>
/<connection name>
/<language>
/
Как указано выше, можно менять местами корень и подключение.
Эти страницы не требуют начальной аутентификации, чтобы позволить пользователю ввести имя и пароль.
Корень и страница по умолчанию — login
и login.htm
. Можно настроить другие корни с соответствующими страницами, например, для регистрации новых пользователей.
Конечные точки операций аутентификации
Эти конечные точки выполняют операции аутентификации JWT.
DBGate создает конечные точки POST для каждого подключения, указанного в файле appsettings, по следующим шаблонам:
<domain>
/<auth root>
/<connection name>
/login
<domain>
/<auth root>
/<connection name>
/logout
<domain>
/<auth root>
/<connection name>
/refresh
<domain>
/<auth root>
/<connection name>
/getToken
Как указано выше, можно менять местами корень и подключение.
Корень по умолчанию — auth
. Имя корня можно изменить в свойстве AuthRoot
файла appsettings.
Конечная точка login
возвращает токены доступа и обновления, куки и время действия токена доступа.
Токены доступа и куки необходимы для доступа к защищенным ресурсам. Токен обновления и куки требуются для обновления токена доступа.
Срок действия токенов можно настроить в свойствах AccessTokenExpirationInMinutes
и RefreshTokenExpirationInMinutes
.
Конечная точка logout
удаляет токены доступа и обновления на стороне сервера.
Конечная точка refresh
возвращает новый токен доступа и его время действия, а также может вернуть новый токен обновления и куки.
Конечная точка getToken
возвращает одноразовый токен доступа, позволяя получать доступ к защищенным ресурсам, которые не поддерживают JavaScript.
DBGate реализует аутентификацию JWT в соответствии с лучшими практиками.
Детали реализации можно увидеть в инструментах разработчика браузера.
Учтите, что куки видны не во всех запросах, так как они устанавливаются для конечных точек API и аутентификации с параметрами SameSite=Strict; HttpOnly=true
.
Конечные точки управления приложением
Для остановки консольного приложения и отображения или скрытия его окна на платформе Windows можно использовать следующие конечные точки:
<domain>
/<app root>
/stop
<domain>
/<app root>
/show
<domain>
/<app root>
/hide
Например:
- https://localhost:5003/app/stop
- https://localhost:5003/app/show
- https://localhost:5003/app/hide
Эти операции могут быть полезны для интеграции DBGate в ваше приложение.
Эти операции доступны только для консольного приложения Windows и при включенном свойстве StopEnabled
.
Корень по умолчанию — app
. Имя корня можно изменить в свойстве AppRoot
файла appsettings.
Статические файлы
DBGate позволяет получать статические файлы из каталога wwwroot
.
Например, можно получать такие файлы как /css/db.min.css
или /js/db.min.js
, с поддержкой сжатия gzip.
Как упоминалось ранее, DBGate поддерживает языковые папки специальным образом.
Например, для запроса /en-gb/sample01.htm
возвращается файл wwwroot/en-us/sample01.htm
, если файл wwwroot/en-gb/sample01.htm
не существует.
DBGate поддерживает индексные страницы: default.htm
, default.html
, index.htm
, index.html
.
DBGate автоматически изменяет тег <base href="/" />
в HTML-страницах для приложений IIS.