Конечные точки 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.