Это позволяет избежать полной перетасовки. Если известно, что число уменьшается, то исполнитель может безопасно хранить данные на минимальном количестве разделов, только перемещая данные с лишних узлов на узлы, которые мы сохранили.
Итак, он будет выглядеть примерно так:
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 не требовал перемещения исходных данных.
Существует инструмент python, чтобы сделать то же самое по имени openapi2jsonschema . Вы можете просто установить его с помощью pip
.
В readme для openapi2 показан самый простой способ его использования:
openapi2jsonschema https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/swagger.json
Надеюсь, это поможет.
После продолжительного боя с использованием Swagger для указания REST API и повторного использования его в связанных наборах тестов, я поделюсь с ним собственным опытом (отвечая на мой собственный вопрос).
Спецификация состояний Swagger 1.2 и 2.0 поддерживает только подмножество JSON Schema Draft 4 (s. здесь ). Это означает, что:
Другими словами:
На практике вы не можете начать с разработки своих данных в JSON или XML, а Swagger вам нужно начинать и заканчивать Swagger.
Я потратил некоторое время на кодирование библиотеки, которая взяла бы спецификацию API Swagger и создала проект JSON Schema Draft 4. Я отказался от двух причин:
Помимо наличия действительно приятного пользовательского интерфейса для показа и тестирования API (да, все согласен, это визуально очень приятно), мне показалось странным, что структура спецификации не позволяет нам использовать то, что мы хотим, но добавляет неожиданные ограничения для нашего дизайна.
Изучая другие рамки спецификации 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.
Мой ответ на такой вопрос будет:
Возможно, существуют другие спецификации, но Swagger (ни v1.2, ни v2.0) определенно не тот. Помимо предоставления действительно большого количества функций (генерация кода, очень приятная документация API и многое другое), он просто терпит неудачу в предоставлении решения обновленного вопроса, указанного выше.
swagger
- & gt; RAML
- & gt; JSON Schema
– webwurst
2 December 2015 в 20:04
У меня были некоторые успехи в этом:
swagger.yaml -> proto -> jsonschema
Я использовал openapi2proto для генерации прото файлы из Swagger yaml, затем protoc-gen-jsonschema , чтобы сгенерировать JSONSchemas. Это достаточно хорошо, чтобы получить типизированную JSONSchema, но proto3 не поддерживает «требуемые» типы, поэтому вы пропустите это.
Я просто написал инструмент pyswagger , который вам подходит.
Он загружает декларацию Swagger API и способен преобразовывать объект python в / из примитивов Swagger. Также предоставляйте набор клиентских реализаций (включая запросы & amp; tornado.httpclient.AsyncHTTPClient), которые могут напрямую обращаться к службе с поддержкой Swagger.
Этот инструмент имеет тенденцию решать первую проблему, с которой я столкнулся при адаптации Swagger в python, и все еще довольно новый. Добро пожаловать на любое предложение.
Только что открыл Swagger и спросил себя так же, как это было бы требованием.
Нашел этот ответ
Попробуйте прямо здесь:
http://petstore.swagger.wordnik.com/
и поместите это как ваш url:
http: // petstore. swagger.wordnik.com/api/api-docs/pet
Я вижу все модели. Ты не? Или я что-то упускаю?
blockquote>здесь в своей группе пользователей: https://groups.google.com/forum/#!searchin/swagger-swaggersocket/schema/swagger- swaggersocket / bzxHxasWhQY / M35V1XWgm7EJ
Вопрос в том, что если «модели» относятся к действующей схеме JSON 4.0 / JSON hyper-schema
swaggerproxy
, которая способна генерировать схемы JSON. Это не было тривиальным и еще далеко не полным. Думая о том, чтобы открыть его, но нужно попросить моего спонсора разрешения.
– Jan Vlcinsky
7 July 2014 в 17:00