Как я могу сгенерировать произвольный тип OpenAPI с помощью Swagger Core (springdoc-openapi)?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как я могу сгенерировать произвольный тип OpenAPI с помощью Swagger Core (springdoc-openapi)?

Сообщение Anonymous »

Я работаю над приложением, которое использует библиотеку Springdoc-openapi для создания конечных точек OpenAPI v3 для контроллеров Spring. Эта библиотека использует Swagger Core для фактического сопоставления объектов Java со схемами OpenAPI.
Существует тип запроса/ответа, используемый контроллером, который включает свойство типа Object.

Код: Выделить всё

public class TypeWithObject {
private Object value;

public Object getValue() { return value; }
public void setValue(Object value) { this.value = value; }
}
Поэтому этот тип может быть любым из типов данных, определенных OpenAPI: строка, число, целое число, логическое значение, массив или объект. Обратите внимание, что object — это тип, отличный от других типов; например строка или логическое значение не является объектом.
Спецификация OpenAPI 3.0 указывает, что схема без какого-либо типа будет соответствовать любому типу данных.

Схема без типа соответствует любому типу данных — числам, строкам, объектам и т. д.

Правильным способом моделирования этого будет следующий Swagger определение, где отсутствует свойство type для значения:

Код: Выделить всё

{
"openapi": "3.0.1",
"info": {
"title": "OpenAPI definition",
"version": "v0"
},
"components": {
"schemas": {
"TypeWithObject": {
"type": "object",
"properties": {
"value": {}
}
}
}
}
}
Однако согласно открытой проблеме swagger-core#3834 значения Java Object сопоставляются с типами объектов OpenAPI, а не с произвольным типом. Как отмечалось выше, это означает, что для такого API было бы неправильно возвращать или принимать тип, который не является объектом OpenAPI, например строку, число, логическое значение и т. д.
Я предпринимал различные попытки заставить приложение генерировать этот тип как произвольный тип OpenAPI, но безуспешно. Одна вещь, которую я обнаружил, экспериментируя с использованием специального ModelConverter для использования схемы Swagger с нулевым типом, заключается в том, что Swagger Core в конечном итоге преобразует тип в объект как часть своей внутренней обработки. В настоящее время это задокументировано как запрос открытой функции Swagger Core как swagger-core#4014.
При всем этом: как я могу заставить свой сгенерированный тип использовать произвольный тип OpenAPI?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»