J'essaie d'ouvrir mon fichier de spécification swagger auto-généré my.json
avec swagger-ui sur mon ordinateur local.
Donc, j'ai téléchargé la dernière balise v2.1.8-M1 et extrait le zip. Ensuite, je suis entré dans le sous-dossier dist
et y ai copié le fichier my.json
. Maintenant, j'ai ouvert le index.html
et je souhaite explorer my.json
. Et ici le problème commence:
Si j'entre un chemin local, il sera toujours préfixé par l'URL actuelle contenant le index.html
. Et pour cela je ne peux pas ouvrir mon dossier. J'ai essayé toutes les combinaisons suivantes sans succès:
my.json
conduit à file:///D:/swagger-ui/dist/index.html/my.json
file:///D:/swagger-ui/dist/my.json
conduit à file:///D:/swagger-ui/dist/index.html/file:///D:/swagger-ui/dist/my.json
Ce qui fonctionne, c'est d'entrer un chemin relatif ou un absolu sans le protocole file://
-:
../my.json
conduit à file:///D:/swagger-ui/dist/index.html/../my.json
et fonctionne/D:/swagger-ui/dist/my.json
conduit à file:///D:/swagger-ui/dist/my.json
et fonctionneINDICE
Cette réponse fonctionne avec Firefox sur Win7. Pour Chrome-Browser, voir les commentaires ci-dessous:
Je ne pouvais pas obtenir la réponse d’Adam Taras (c’est-à-dire en utilisant le chemin relatif ../my.json
).
Voici ma solution (assez rapide et sans douleur si vous avez installé le noeud):
npm install -g http-server
http-server --cors
(pour que cela fonctionne, CORShttp://localhost:8080/my.json
dans le champ de saisie et cliquez sur "Explorer"Utilisez le paramètre spec .
Instructions ci-dessous.
Créez un nouveau fichier javascript dans le même répertoire que index.html (/ dist /)
Puis insérez la déclaration de variable spec
:
var spec =
Ensuite, collez le contenu du fichier swagger.json après. Il ne doit pas obligatoirement figurer sur la même ligne que le signe =
.
Exemple:
var spec =
{
"swagger": "2.0",
"info": {
"title": "I love Tex-Mex API",
"description": "You can barbecue it, boil it, broil it, bake it, saute it. Dey's uh, Tex-Mex-kabobs, Tex-Mex creole, Tex-Mex gumbo. Pan fried, deep fried, stir-fried. There's pineapple Tex-Mex, lemon Tex-Mex, coconut Tex-Mex, pepper Tex-Mex, Tex-Mex soup, Tex-Mex stew, Tex-Mex salad, Tex-Mex and potatoes, Tex-Mex burger, Tex-Mex sandwich..",
"version": "1.0.0"
},
...
}
}
C'est un pas en deux comme Ciara.
Modifiez le fichier /dist/index.html pour inclure le fichier externe spec.js
.
<script src='spec.js' type="text/javascript"></script>
Exemple:
<!-- Some basic translations -->
<!-- <script src='lang/translator.js' type='text/javascript'></script> -->
<!-- <script src='lang/ru.js' type='text/javascript'></script> -->
<!-- <script src='lang/en.js' type='text/javascript'></script> -->
<!-- Original file pauses -->
<!-- Insert external modified swagger.json -->
<script src='spec.js' type="text/javascript"></script>
<!-- Original file resumes -->
<script type="text/javascript">
$(function () {
var url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "http://petstore.swagger.io/v2/swagger.json";
}
Modifiez l'instance SwaggerUi pour inclure le paramètre spec
:
window.swaggerUi = new SwaggerUi({
url: url,
spec: spec,
dom_id: "swagger-ui-container",
Après un peu de lutte, j'ai trouvé une meilleure solution.
créer un répertoire avec le nom: swagger
mkdir C:\swagger
Si vous êtes sous Linux, essayez:
mkdir /opt/swagger
obtenez swagger-editor avec la commande ci-dessous:
git clone https://github.com/swagger-api/swagger-editor.git
aller dans le répertoire swagger-editor créé maintenant
cd swagger-editor
maintenant obtenir swagger-ui avec la commande ci-dessous:
git clone https://github.com/swagger-api/swagger-ui.git
maintenant, copiez votre fichier swagger, je l'ai copié dans le chemin ci-dessous:
./swagger-editor/api/swagger/swagger.json
toute la configuration est terminée, lancez swagger-edit avec les commandes ci-dessous
npm install
npm run build
npm start
On vous demandera 2 URL, l'une d'elles pourrait ressembler à:
http://127.0.0.1:3001/
Ci-dessus est swagger-editor URL
Maintenant, naviguez jusqu'à:
http://127.0.0.1:3001/swagger-ui/dist/
Ci-dessus est swagger-ui URL
C'est tout.
Vous pouvez maintenant parcourir les fichiers depuis Swagger-ui ou Swagger-editor
Il faudra du temps pour installer/construire, mais une fois cela fait, vous verrez d’excellents résultats.
Cela a pris environ 2 jours de lutte pour moi, une installation ponctuelle n'a pris que 5 minutes environ.
Maintenant, en haut à droite, vous pouvez accéder à votre fichier local.
bonne chance.
Dans un répertoire local contenant le fichier ./docs/specs/openapi.yml
à afficher, vous pouvez exécuter ce qui suit pour démarrer un conteneur et accéder à la spécification à http://127.0.0.1:8246
.
docker run -t -i -p 8246:8080 -e SWAGGER_JSON=/var/specs/openapi.yml -v $PWD/docs/specs:/var/specs swaggerapi/swagger-ui
Mon environnement,
Firefox 45.9, Windows 7
swagger-ui ie 3.x
J'ai fait le dézipage et le magasin d'animaux de compagnie s'affiche correctement dans un onglet Firefox . J'ai ensuite ouvert un nouvel onglet Firefox et suis allé dans Fichier> Ouvrir le fichier et a ouvert mon fichier swagger.json. Le fichier apparaît propre, c'est-à-dire sous forme de fichier.
J'ai ensuite copié «l'emplacement du fichier» depuis Firefox (c'est-à-dire l'emplacement de l'URL, par exemple: fichier: /// D: /My%20Applications/Swagger/swagger-ui-master/dist/MySwagger.json).
Je suis ensuite retourné à l'onglet d'interface utilisateur de swagger et ai collé le texte d'emplacement de fichier dans la fenêtre d'exploration d'interface utilisateur de swagger.
J'espère que cela t'aides.
J'ai eu ce problème et voici la solution beaucoup plus simple:
Remplacez l’URL petstore par défaut dans dist/index.html par votrelocalhost/api-docsou pour le rendre plus généralisé, remplacez-le par ceci:
location.protocol + '//' + location.hostname + (location.port? ':' + location.port: '') + "/ api-docs";
Hit à nouveaulocalhost/swagger-ui
Voila! Votre implémentation locale de swagger est prête
LINUX
J'ai toujours eu des problèmes en essayant les chemins et le paramètre spec.
C'est pourquoi j'ai opté pour la solution en ligne qui mettra à jour automatiquement le JSON sur Swagger sans avoir à importer de nouveau.
Si vous utilisez npm pour lancer votre éditeur swagger, vous devez ajouter un lien symbolique à votre fichier json.
cd /path/to/your/swaggerui where index.html is
ln -s /path/to/your/generated/swagger.json
Vous pouvez rencontrer des problèmes de cache ... Le moyen le plus rapide de résoudre ce problème était d’ajouter un jeton à la fin de mon URL ...
window.onload = function() {
var noCache = Math.floor((Math.random() * 1000000) + 1);
// Build a system
const editor = SwaggerEditorBundle({
url: "http://localhost:3001/swagger.json?"+noCache,
dom_id: '#swagger-editor',
layout: 'StandaloneLayout',
presets: [
SwaggerEditorStandalonePreset
]
})
window.editor = editor
}
Voici comment j'ai travaillé avec JSON swagger local
J'espère que cela fonctionne pour toi
Avec Firefox, je:
swagger.json
à cet endroit, etFaites attention à vos directions de barre oblique !!
Il semble que vous puissiez explorer la structure des dossiers, mais pas vers le haut, de manière ennuyeuse.
Au lieu d’ouvrir swagger ui en tant que fichier, vous devez le placer dans le navigateur File: /// D: /swagger-ui/dist/index.htmlvous pouvez: Créer un répertoire virtuel qui permette la navigation et pointe vers D:/swagger-ui
Une autre option consiste à exécuter swagger en utilisant docker, vous pouvez utiliser cette image de docker:
https://hub.docker.com/r/madscientist/swagger-ui/
J'ai créé ce petit script BASH ghetto pour supprimer les conteneurs en cours d'exécution et les reconstruire. Ainsi, chaque fois que vous apportez une modification à vos spécifications et que vous souhaitez les voir, exécutez simplement le script. Assurez-vous de mettre le nom de votre application dans la variable APP_NAME.
#!/bin/bash
# Replace my_app with your application name
APP_NAME="my_app"
# Clean up old containers and images
old_containers=$(docker ps -a | grep $APP_NAME | awk '{ print $1 }')
old_images=$(docker images | grep $APP_NAME | awk '{ print $3 }')
if [[ $old_containers ]];
then
echo "Stopping old containers: $old_containers"
docker stop $old_containers
echo "Removing old containers: $old_containers"
docker rm $old_containers
fi
if [[ $old_images ]];
then
echo "Removing stale images"
docker rmi $old_images
fi
# Create new image
echo "Creating new image for $APP_NAME"
docker build . -t $APP_NAME
# Run container
echo "Running container with image $APP_NAME"
docker run -d --name $APP_NAME -p 8888:8888 $APP_NAME
echo "Check out your swaggery goodness here:
http://localhost:8888/swagger-ui/?url=http://localhost:8888/swagger-ui/swagger.yaml"