Спецификация Swagger в черновик 4 [дубликат]

Это позволяет избежать полной перетасовки. Если известно, что число уменьшается, то исполнитель может безопасно хранить данные на минимальном количестве разделов, только перемещая данные с лишних узлов на узлы, которые мы сохранили.

Итак, он будет выглядеть примерно так:

Node 1 = 1,2,3
Node 2 = 4,5,6
Node 3 = 7,8,9
Node 4 = 10,11,12

Затем coalesce до двух разделов:

Node 1 = 1,2,3 + (10,11,12)
Node 3 = 7,8,9 + (4,5,6)

Обратите внимание, что узлы 1 и Узел 3 не требовал перемещения исходных данных.

54
задан Akshay Pratap Singh 20 April 2016 в 19:45
поделиться

5 ответов

Существует инструмент python, чтобы сделать то же самое по имени openapi2jsonschema . Вы можете просто установить его с помощью pip.

В readme для openapi2 показан самый простой способ его использования:

openapi2jsonschema https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/swagger.json

Надеюсь, это поможет.

2
ответ дан Akash Masand 18 August 2018 в 02:54
поделиться
  • 1
    Это также хорошо работает для автономных спецификаций yaml open api. – Len 29 April 2018 в 10:37

После продолжительного боя с использованием Swagger для указания REST API и повторного использования его в связанных наборах тестов, я поделюсь с ним собственным опытом (отвечая на мой собственный вопрос).

Swagger поддерживает только подмножество JSON Schema Draft 4

Спецификация состояний Swagger 1.2 и 2.0 поддерживает только подмножество JSON Schema Draft 4 (s. здесь ). Это означает, что:

  • нельзя полагаться на то, что каждая действительная схема JSON может полностью поддерживаться Swagger.
  • мышление XML, Swagger поддерживает только каноническое представление подмножества JSON-структуры, представленные проектом JSON Schema Draft 4.

Другими словами:

  • Swagger (1.2 и 2.0) не поддерживает использование многих структур JSON, которые действительны в терминах проекта схемы JSON 4 (то же самое относится к проекту 3).
  • Swagger не поддерживает общие структуры данных XML, допускаются только очень ограниченные структуры.

На практике вы не можете начать с разработки своих данных в JSON или XML, а Swagger вам нужно начинать и заканчивать Swagger.

Получение схемы JSON теоретически возможно, но нелегко

Я потратил некоторое время на кодирование библиотеки, которая взяла бы спецификацию API Swagger и создала проект JSON Schema Draft 4. Я отказался от двух причин:

  • было совсем нелегко
  • разочарован найти что я могу использовать только подмножество того, что предоставляет JSON Schema. У нас уже была какая-то полезная нагрузка на JSON, и мне пришлось ее модифицировать только для того, чтобы она соответствовала спецификации спецификации Swagger.

Помимо наличия действительно приятного пользовательского интерфейса для показа и тестирования API (да, все согласен, это визуально очень приятно), мне показалось странным, что структура спецификации не позволяет нам использовать то, что мы хотим, но добавляет неожиданные ограничения для нашего дизайна.

Если вы хотите, чтобы полный JSON или Поддержка XML Schema, используйте RAML

Изучая другие рамки спецификации API, я нашел RAML. Поскольку он построен с нуля, поддерживая любые структуры данных JSON Schema Draft 3/4 или W3C XML Schema 1.0, опыт был отличным - с конструкцией моей полезной нагрузки я смог быстро разработать спецификацию API и после проверки реальных запросов и ответы против определенных схем были очень легкими, так как схемы являются важными компонентами спецификации без добавления каких-либо ограничений на них.

RAML был в версии 0.8 в то время (версия 1.0 еще не была выпущена).

Исправление вопроса приводит к реальному решению

. Хороший вопрос составляет половину решения. Мой вопрос был неправильным, поскольку он пропустил выполнение моих реальных ожиданий. Исправлен вопрос:

Какую спецификационную структуру и технику использовать, чтобы указать REST API с использованием полезной нагрузки, определенной произвольной схемой JSON Draft 4 или W3C XML Schema 1.0.

Мой ответ на такой вопрос будет:

  1. Создайте свою полезную нагрузку в схеме JSON Draft 4 или XML-схеме W3C
  2. Опишите свой REST API с помощью RAML (v0.8 на данный момент) .

Возможно, существуют другие спецификации, но Swagger (ни v1.2, ни v2.0) определенно не тот. Помимо предоставления действительно большого количества функций (генерация кода, очень приятная документация API и многое другое), он просто терпит неудачу в предоставлении решения обновленного вопроса, указанного выше.

57
ответ дан automatix 18 August 2018 в 02:54
поделиться
  • 1
    Есть несколько Swagger для конвертеров RAML. @ jan-vlcinsky, вы думаете, что это может работать для «простых»? схемы? swagger - & gt; RAML - & gt; JSON Schema – webwurst 2 December 2015 в 20:04
  • 2
    @webwurst звучит многообещающе. Знаете ли вы о каком-либо инструменте, который преобразует RAML в JSON Schema? Или конверсия в RAML уже строит схему JSON для элементов? Во всяком случае, мои основные проблемы с Swagger были ложными ожиданиями, что в Swagger я могу выразить все, что позволяет JSON Schema, и это было неверно. – Jan Vlcinsky 2 December 2015 в 21:04
  • 3
    Единственная проблема заключается в том, что сообщество вокруг RAML все еще недостаточно популярно. И точно так же, как вы сказали, если Swagger разрешает полную схему JSON, я могу удалить десяток кода в pyswagger, заменив их лучшим парсером python. – mission.liao 7 May 2016 в 00:26
  • 4
    Предположим, что ваши данные смоделированы в схеме JSON (не XML). Каковы основные преимущества использования RAML над JSON Hyper-Schema для определения вашего API? Похоже, что список недостающих функций станет отправной точкой для проекта JSON Hyper-Schema-5 (при условии, что для этого предложения есть сообщество). – kerlyn 14 October 2016 в 18:28

У меня были некоторые успехи в этом:

swagger.yaml -> proto -> jsonschema

Я использовал openapi2proto для генерации прото файлы из Swagger yaml, затем protoc-gen-jsonschema , чтобы сгенерировать JSONSchemas. Это достаточно хорошо, чтобы получить типизированную JSONSchema, но proto3 не поддерживает «требуемые» типы, поэтому вы пропустите это.

1
ответ дан Chrusty 18 August 2018 в 02:54
поделиться

Я просто написал инструмент pyswagger , который вам подходит.

Он загружает декларацию Swagger API и способен преобразовывать объект python в / из примитивов Swagger. Также предоставляйте набор клиентских реализаций (включая запросы & amp; tornado.httpclient.AsyncHTTPClient), которые могут напрямую обращаться к службе с поддержкой Swagger.

Этот инструмент имеет тенденцию решать первую проблему, с которой я столкнулся при адаптации Swagger в python, и все еще довольно новый. Добро пожаловать на любое предложение.

3
ответ дан mission.liao 18 August 2018 в 02:54
поделиться
  • 1
    @missionliao Первое впечатление очень хорошее. В течение нескольких недель я приступлю для более детального изучения этого вопроса, опубликую мое приложение (в настоящее время называемое SwaggerProxy), и мы можем присоединиться к нашим усилиям. Некоторые из дизайнерских решений, видимых в вашем решении, очень похожи на то, что я сделал тоже, это многообещающий сигнал. – Jan Vlcinsky 2 September 2014 в 14:17

Только что открыл Swagger и спросил себя так же, как это было бы требованием.

Нашел этот ответ

Попробуйте прямо здесь:

http://petstore.swagger.wordnik.com/

и поместите это как ваш url:

http: // petstore. swagger.wordnik.com/api/api-docs/pet

Я вижу все модели. Ты не? Или я что-то упускаю?

здесь в своей группе пользователей: https://groups.google.com/forum/#!searchin/swagger-swaggersocket/schema/swagger- swaggersocket / bzxHxasWhQY / M35V1XWgm7EJ

Вопрос в том, что если «модели» относятся к действующей схеме JSON 4.0 / JSON hyper-schema

2
ответ дан sebilasse 18 August 2018 в 02:54
поделиться
  • 1
    Спасибо за внимание. Тем не менее, мне нужна схема JSON, и URL указывает на документ JSON, соответствующий структуре деклараций Swagger API, но это не JSON Schema. Мне нужна схема, которую я могу использовать для проверки полезной нагрузки JSON (запрос или ответ), чтобы увидеть, если она соответствует. Тем временем я разработал собственную библиотеку Python swaggerproxy, которая способна генерировать схемы JSON. Это не было тривиальным и еще далеко не полным. Думая о том, чтобы открыть его, но нужно попросить моего спонсора разрешения. – Jan Vlcinsky 7 July 2014 в 17:00
  • 2
    Извините, пропустил ваш комментарий. Понял, что между ними. Делал то же самое, что и вы между ними, но в javascript. Пойдет OpenSource. Клиентская часть находится здесь как WIP: redaktor.circinus.uberspace.de/schemer - теперь работает над частью узлов node.js. – sebilasse 2 September 2014 в 18:37
  • 3
    @JanVlcinsky. Открыт ли swaggerproxy? Я застрял с той же проблемой. – Jibin TJ 9 September 2016 в 05:32
Другие вопросы по тегам:

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