yandex-market / yandex-market-partner-api

API Яндекс Маркета для продавцов
https://yandex.ru/dev/market/partner-api/doc/ru/
BSD 3-Clause "New" or "Revised" License
17 stars 6 forks source link

Циклическая ссылка в yaml файле на сам себя. #4

Closed ZababurinSergei closed 4 months ago

ZababurinSergei commented 4 months ago

Я подключил в свагер openapi спецификацию.

Получил ошибку

Errors
Hide

Resolver error
Maximum call stack size exceeded
Resolver error
Cannot read properties of undefined (reading '$$ref')
Resolver error
Cannot read properties of undefined (reading 'properties')
Resolver error
Cannot read properties of undefined (reading 'properties')
Resolver error
Cannot read properties of undefined (reading 'properties')
Resolver error
Cannot read properties of undefined (reading '$$ref')
Resolver error
Maximum call stack size exceeded

Начал смотреть где это и нашел причину ошубки.

Она находится в файле /openapi/components/schemas/RegionDTO.yaml

description: Регион доставки.
type: object
required:
  - name
  - type
properties:
  id:
    description: Идентификатор региона.
    type: integer
    format: int64
  name:
    description: Название региона.
    type: string
  type:
    description: Тип региона.
    $ref: ./RegionType.yaml
  parent:
    description: |
      Информация о родительском регионе.

      Указываются родительские регионы до уровня страны.
    $ref: ./RegionDTO.yaml
  children:
    description: Дочерние регионы.
    type: array
    items:
      $ref: ./RegionDTO.yaml

В двух местах, ссылки стоят на сам файл, и получается циклическая ссылка.

 $ref: ./RegionDTO.yaml

Как поправить этот файл ?

vbauer commented 4 months ago

@ZababurinSergei Можете пожалуйста уточнить каким генератором пользуетесь и с какими параметрами его запускаете?

Желательно cli-команду в консоли, которая воспроизводит проблему

PS: Циклические зависимости не запрещены в OpenAPI спецификации, возможно проблема с конкретным генератором кода

ZababurinSergei commented 4 months ago

Это swagger-ui такую ошибку выдал.

Для api я использую swagger-client но там не смотрел ещё.

Тут можнопосмотреть. Хостинг только бесплатный, он засыпает(надо минуту ждать), и кончится может. Но пока вроде работает.

https://market-iewb.onrender.com/

vbauer commented 4 months ago

@ZababurinSergei Спасибо за информацию. На эту проблему есть открытый issue в swagger-ui, но к сожалению пока что по нему нет движения https://github.com/swagger-api/swagger-ui/issues/5726