Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Замечание
Функции построителя данных 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, чтобы избежать конфликтов с определяемыми пользователем сущностями.