validator specification open example json command-line yaml swagger

specification - Conversión de un archivo YAML Swagger a JSON desde la línea de comandos



swagger validator (5)

swagger-codegen cli interface

Como Liel ya ha señalado , puedes correr.

swagger-codegen generate -i swagger.yaml -l swagger

Estibador

Si usas Docker, te sugiero que pruebes swaggerapi/swagger-codegen-cli .

Puedes generar un archivo json usando la ventana acoplable con el siguiente comando:

docker run -v ./docs:/docs swaggerapi/swagger-codegen-cli generate -i /docs/swagger.yaml -l swagger -o /docs

Me gusta configurar un docker-compose.yml para "alias" este comando para reutilizarlo fácilmente:

version: "2" services: gen-swagger: volumes: - ./docs:/docs image: swaggerapi/swagger-codegen-cli command: generate -i /docs/swagger.yaml -l swagger -o /docs

Y ahora solo puedo ejecutar docker-compose run gen-swagger

Me gustaría convertir un archivo YAML Swagger a JSON desde la línea de comandos. El plan es usar esta línea de comando durante un trabajo de CI. Busqué en Google y encontré muchas soluciones, pero la mayoría de ellas usan Python o Ruby, que prefiero no usar. Por ejemplo: http://www.commandlinefu.com/commands/view/12218/convert-yaml-to-json

Me gustaría hacer esto sin usar Python o Ruby, y también me gustaría poder controlar el espacio en blanco al formatear el JSON para que coincida exactamente con el JSON que sale del editor editor.swagger.io de Swagger, cuando elija File -> Download JSON

Todo lo que esto significa es que me gustaría que el espacio de espacio en blanco fuera cuatro espacios, así:

{ "swagger": "2.0", "info": { "title": "API TITLE",

No he probado el método Python en el enlace anterior, pero el método Ruby utiliza dos espacios de espacio en blanco. Tal vez haya una forma de controlar eso, pero de todos modos no quiero usar Ruby o Python en esta solución.

Estoy seguro de que hay muchas respuestas "correctas" a esta pregunta. Estoy buscando la solución más elegante con el menor número de dependencias. Idealmente, una diferencia del archivo JSON resultante contra un archivo JSON generado por el editor.swagger.io debería estar vacío.


Creo que estás buscando la funcionalidad swagger-codegen :

Corriendo

swagger-codegen generate -i swagger.yaml -l swagger

pondrá fuera un swagger.json en la misma ubicación.

Actualización para CI: si puede instalarlo en su máquina de compilación, es bueno para usted. Si no puede, la página github tiene un enlace a una imagen de docker con un servidor nodejs disponible (para convertir usando un comando curl como se sugiere en una respuesta diferente).


Para la versión swagger-codegen 3.0.4

Utilizar

swagger-codegen generate -i my_yaml.yaml -l openapi

para obtener un .json .


Puedes usar el proyecto codegen de swagger en línea para hacer esto:

curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "{ /"spec/": {} }" "https://generator.swagger.io/api/gen/clients/swagger-yaml"

Ponga el valor de su definición de swagger en el objeto spec . Obtendrá un enlace para descargar la especificación convertida y validada, en formato yaml.

Para las opciones, eche un vistazo aquí:

http://generator.swagger.io/


Usando yamljs :

yaml2json swagger.yaml -p -i4

La salida de este comando dif contra la salida JSON de editor.swagger.io produce una diferencia vacía.

Esto es realmente lo que estoy buscando, pero trae una gran dependencia (nodo). Espero algo aún más ligero, pero tan elegante como este.