Ошибка схемы Swagger при попытке использовать

У меня ошибка, аналогичная Ошибка схемы Swagger НЕ должна иметь дополнительных свойств, но в моем случае я ссылаюсь на # / definitions, поэтому был бы признателен за помощь.

Я попытался создать явный объект:

    responses:
          '200':
            content: application/json
            schema:
              type: object
              properties:
                id: integer

и это дает мне:
Ошибка схемы на пути ['/ user']. post.responses ['200'] НЕ ДОЛЖНЫ иметь дополнительных свойств additionalProperty: content, schema Перейти к строке 119

Я также пробовал:

          responses:
          '200':
            $ref: '#/definitions/UserCreateResponse'

и это вызывает у меня:
Семантическая ошибка в paths./user.post.responses.200.$ref 200 $ refs не может соответствовать ни одному из следующего: "# / definitions", "< em> # / parameters "Перейти к строке 120

Если я использую $ ref, объект отображается так, как нужно, но ошибка сохраняется в редакторе.


person tmurphree    schedule 05.01.2018    source источник
comment
Есть ли причина, по которой вы пытаетесь создать схему вручную, вместо использования одного из многих генераторов (предоставляемых самим swagger и сторонними реализациями)?   -  person user247702    schedule 06.01.2018
comment
По неопытности. Я использую редактор Swagger (swagger.io/swagger-editor), и именно здесь я m увидев ошибку: есть ли способ лучше?   -  person tmurphree    schedule 06.01.2018
comment
Зависит от языка и структуры, с которой вы работаете. Например, в веб-API ASP.NET есть NSwag и Swashbuckle, которые генерируют для вас спецификации на основе написанного вами API. Их можно написать вручную, но легко ошибиться, и это не удобно для разработчиков, когда дело доходит до обслуживания.   -  person user247702    schedule 06.01.2018


Ответы (2)


Ваш первый пример неверен. Измените это на:

    produces:
      - application/json  # <-- Response Content-Type is specified by "produces"
    responses:
      '200':
        description: OK   # <-- Each response code needs a "description"
        schema:
          type: object
          properties:
            id:
              type: integer  # <---

Трудно сказать, что вызвало вторую ошибку (при использовании $ref), потому что вы не опубликовали полную спецификацию.

person Helen    schedule 07.01.2018

@Stijn указал мне на исправление: напишите код, а затем сгенерируйте из него код Swagger.

Также с помощью онлайн-редактора (ссылка отсюда: https://swagger.io/swagger-editor/) вместо моей локальной версии Dockerized тоже решила проблему.

person tmurphree    schedule 06.01.2018