Как использовать переменный контент в качестве ключей в JAML для swagger? [Дубликат]

WebMvcTest только загрузит ваш контроллер и ничего больше (поэтому мы называем это срезанием). Мы не можем понять, какая часть вашей конфигурации вам нужна, а какая нет. Если конфиг безопасности не находится на вашем основном @SpringBootApplication, вам придется импортировать его явно. В противном случае Spring Boot включит параметры безопасности по умолчанию.

Если вы используете что-то вроде OAuth, это хорошо, потому что вы действительно не хотите начинать использовать это для макетного теста. Что произойдет, если вы добавите @Import(SecurityConfig.class) в свой тест?

12
задан Xavier Lamorlette 21 March 2016 в 17:42
поделиться

2 ответа

Использование additionalProperties - это правильный способ описать hashamp с помощью спецификации OpenAPI (fka. Swagger), но пользовательский интерфейс Swagger пока не отображает их.

Проблема отслеживается здесь https: / /github.com/swagger-api/swagger-ui/issues/1248

Между тем вы можете использовать этот трюк, чтобы определить не требуемое свойство (default в примере ниже) тот же тип объектов карты и дать некоторый намек в описании:

swagger: "2.0"
info:
  version: 1.0.0
  title: Hashmap

paths: {}

definitions:
  MapItem:
    properties:
      firstname:
        type: string
      lastname:
        type: string
  Map:
    description: a (key, MapItem) map. `default`is an example key
    properties:
      default:
        $ref: '#/definitions/MapItem'
    additionalProperties:
      $ref: '#/definitions/MapItem'

Это описание не изменяет контракт API и улучшает документацию.

27
ответ дан Arnaud Lauret 20 August 2018 в 08:00
поделиться
  • 1
    Спасибо, что нашли ссылку на соответствующую проблему в SwaggerUI. К сожалению, у меня пока нет достаточной репутации, чтобы проголосовать за ваш ответ ;-) – Xavier Lamorlette 17 May 2016 в 07:11
  • 2
    Начиная с этой даты, по крайней мере javascript-версия swagger-codegen игнорирует дополнительные свойства, поэтому это может быть showstopper для некоторых – 1800 INFORMATION 9 June 2017 в 06:05

Если я правильно понимаю, основная проблема заключается в том, что нет универсально принятого сопоставления JSON для карты Java, особенно когда ключ более сложный, чем строка. Я видел, что GSON использует один подход (рассматривайте ключ как объект), тогда как Джексон берет другое (сериализует ключ к строке). C #, эквивалентный Карте (Словарь), использует третий подход (рассматривая каждую запись как объект с ключом по своему усмотрению со свойствами, называемыми «ключ» и «значение»). Поскольку Swagger пытается быть агностиком для языка и сериализатора, это ставит его в невозможное положение.

2
ответ дан John Denniston 20 August 2018 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: