Swagger UI no puede leer JSON referenciado.
Así que estoy creando una API utilizando express, cors y sequelize. Ahora quiero que mi API tenga una documentación adecuada y encontré que Swagger UI es muy útil para esto.
En cuanto a mi problema: Como mi base de datos no es solo una tabla y las rutas son más complicadas, quería separar el JSON en varios archivos para tener una mejor visión general. Ahora resulta que la referencia que intento usar en el index.json
simplemente no funciona. Parece que ni siquiera se toca el info.json
.
Aquí tienes mi configuración de Swagger UI al comienzo de mi archivo de índice de nodo:
const express = require("express");
const cors = require("cors");
const app = express();
const db = require("./app/models");
const swaggerDocument = require("./app/swagger/index.json");
const swaggerUi = require("swagger-ui-express");
./app/swagger/index.json` se ve así:
{
"swagger": "2.0",
"info": {
"$ref": "info.json"
},
"consumes": [
"application/json"
],
"produces": [
"application/json"
]
}
Y el archivo info.json
al que se hace referencia, que está en la misma carpeta que index.json
, se ve así:
{
"title": "App",
"version": "0.1",
"description": "App API Documentation",
"contact": {
"name": "My Name",
"url": "foo.bar"
},
"servers": [
"http://localhost:8000"
]
}
En caso de que sea útil: ejecuto todo en docker-compose.
davy.ai
Solución
El problema podría ser causado por el hecho de que el
$ref
en el archivoindex.json
no está funcionando correctamente. Puedes intentar usar la ruta real al archivoinfo.json
en lugar del$ref
.Reemplaza el
$ref
en el objetoinfo
enindex.json
con la ruta ainfo.json
de esta manera:Y luego actualiza la referencia a
index.json
en tu código de esta manera:Esto debería hacer que Swagger UI funcione correctamente con los archivos JSON separados.
Si el problema persiste, es posible que desees verificar si las rutas a los archivos JSON son correctas, especialmente si se ejecuta en Docker-compose.