Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.
Спецификация OpenAPI — это стандарт, не зависящий от языка для документирования API HTTP. Конструктор API для данных поддерживает OpenAPI путем:
- Создание метаданных для всех сущностей с поддержкой REST, определенных в конфигурации среды выполнения.
- Компиляция метаданных в допустимую схему OpenAPI
- Предоставление схемы через визуальный пользовательский интерфейс (Swagger) или в виде сериализованного JSON-файла
- Фильтрация схемы для отображения только методов и полей HTTP, доступных для данной роли
Документ описания OpenAPI
Построитель API данных создает документ описания OpenAPI с помощью конфигурации среды выполнения и метаданных базы данных для каждой сущности с поддержкой REST.
Схема создается с помощью пакета SDK OpenAPI.NET и соответствует спецификации OpenAPI версии 3.0.1. Это выводится в виде документа JSON.
Вы можете получить доступ к документу OpenAPI по адресу:
GET /{rest-path}/openapi
Замечание
По умолчанию rest-path имеет значение api. Это значение можно настроить. Дополнительные сведения см. в конфигурации REST .
OpenAPI с поддержкой разрешений
Начиная с DAB 2.0, документ OpenAPI отражает фактические разрешения, настроенные для каждой сущности. Вместо того чтобы документировать все возможные методы HTTP, созданная схема показывает только методы и поля, к которым может получить доступ данная роль.
Сопоставление разрешений с методами HTTP
DAB преобразует разрешения сущности в видимость метода HTTP в документе OpenAPI:
| Действие разрешения | Показаны методы HTTP |
|---|---|
read |
GET |
create |
POST |
create + update |
PUT, PATCH |
delete |
DELETE |
Например, если anonymous роль имеет разрешение только read к сущности Book, документ OpenAPI для анонимной роли отображает только GET операции для /api/Book. Операции POST, PUT, PATCH и DELETE полностью опущены.
Фильтрация на уровне поля
Если разрешения включают правила уровня include поля или exclude, схема OpenAPI отражает эти ограничения. В схемах запроса и ответа отображаются только поля, доступные роли. Эта фильтрация дает потребителям точное представление о том, что API принимает и возвращает в соответствии с их ролью.
Пути OpenAPI для конкретной роли
DAB предоставляет конечные точки OpenAPI для ролей, чтобы проверить схему для любой настроенной роли:
GET /{rest-path}/openapi
GET /{rest-path}/openapi/anonymous
GET /{rest-path}/openapi/authenticated
GET /{rest-path}/openapi/admin
/openapi Базовый путь возвращает анонимное представление по умолчанию. Каждый путь для конкретной роли возвращает схему, отфильтрованную по разрешениям этой роли.
Это важно
Пути OpenAPI для ролей (/openapi/{role}) доступны только в режиме разработки. В рабочем режиме эти конечные точки отключены, чтобы предотвратить перечисление ролей. Только базовый /openapi путь доступен в режиме рабочей среды.
Замечание
Конечная точка для конкретной роли возвращает 404 Not Found, если у роли нигде в конфигурации среды выполнения не настроены разрешения на сущности. Только роли, имеющие по крайней мере одну permissions запись на одной сущности, создают документ OpenAPI.
Пример
Рассмотрим эту конфигурацию разрешений:
{
"entities": {
"Book": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read",
"fields": { "include": ["id", "title", "year"] }
}
]
},
{
"role": "authenticated",
"actions": ["create", "read", "update", "delete"]
}
]
}
}
}
С этой конфигурацией:
-
/api/openapi/anonymousпоказывает толькоGET /api/Bookс полями ответаid,titleиyear. -
/api/openapi/authenticatedпоказываетGET,POST,PUT,PATCHиDELETEоперации на/api/Bookсо всеми полями.
Пользовательский интерфейс Swagger
Пользовательский интерфейс Swagger предоставляет интерактивное веб-представление API на основе схемы OpenAPI.
В режиме Development построитель API данных предоставляет пользовательский интерфейс Swagger по адресу:
GET /swagger
Эта конечная точка не вложена в rest-path, чтобы избежать конфликтов с определяемыми пользователем сущностями.