#java #swagger #swagger-ui #openapi
Вопрос:
В своем проекте я использую открытый API 3.0 для создания классов mmodel.
Мое требование состоит в том, чтобы я должен был повторно использовать атрибут родительского класса для подкласса.
Экс:
public class Student {
private String id;
private String name;
}
public class Address {
private String id;
private String name;
private String city;
private String state;
}
Но проблема в том, что все они генерируют класс bean, как показано ниже, а не выше.
public class Address {
public Student student;
private String city;
private String state;
}
Ниже приведена моя схема.yaml
Student:
properties :
id:
type: integer
format: int64
description: The ID of the new account
name:
type: string
description: The human-readable description of this account
Address:
properties :
allOf:
$ref : '#/Student'
city:
type: string
description: City
state:
type: string
description: State
Как убедиться, что свойства дублируются вместо создания объекта.
Любая помощь будет очень признательна!!!
Комментарии:
1.Похоже
allOf
, это не делает того, чего вы от него ожидаете. В соответствии с документацией SwaggerallOf
используется для композиции (это означает, что в вашем примереAddress
она состоит из ссылки на aStudent
и некоторых дополнительных полей).2. Спасибо, Томас!!! Я понял цель всего этого. Есть ли какой-нибудь другой способ достичь того, что мне нужно?
Ответ №1:
Вы можете определить отдельные разделы под allOf
элементом. Первый раздел-это ссылка на ваш родительский объект. Второй раздел-это объект с дополнительными свойствами.
Следующее правильно проанализировано в https://editor.swagger.io :
openapi: 3.0.1
info:
title: "example"
version: "1.0"
paths:
/example:
post:
responses:
"200":
description: example
content:
application/json:
schema:
$ref: '#/components/schemas/Address'
components:
schemas:
Student:
properties:
id:
type: integer
format: int64
description: The ID of the new account
name:
type: string
description: The human-readable description of this account
Address:
allOf:
- $ref : '#/components/schemas/Student'
- type: object
properties:
city:
type: string
description: City
state:
type: string
description: State
Комментарии:
1. Спасибо, Джек. Но если я определяю так, я получаю ошибку «отказано в доступе». исключение java.io.FileNotFoundException: C:testsrcmain ресурсысхемаv0_1 (Доступ запрещен)
2. Возможно, вы используете spring security, тогда вам необходимо предоставить разрешение для папки ресурсов из вашего файла конфигурации безопасности : — .antMatchers(«/ресурсы/**»).PermitAll()