77 votes

Serveur fantaisie Swagger/OpenAPI

J'ai une référence d'API dans un fichier Swagger. Je veux créer un serveur fantaisie très simple, de sorte que lorsque j'appelle par exemple :

mymockurl.com/users il retournera un JSON prédéfini (pas besoin de se connecter à une base de données).

Quel est le moyen le plus simple de le faire ? Je ne suis pas un spécialiste du backend.

53voto

Arnaud Lauret Points 2362

Un moyen facile de créer une maquette simple à partir d'une spécification OpenAPI (fka Swagger) sans code est d'utiliser un outil appelé prisme disponible à l'adresse http://github.com/stoplightio/prism écrit en tapuscrit.

Cette ligne de commande est tout ce dont vous avez besoin :

./prism run --mock --list --spec <your swagger spec file>

Le serveur fantaisie renverra une réponse dynamique basée sur la spécification OpenAPI. Si des exemples sont fournis dans la spécification, prism les retournera, sinon il générera des données factices basées sur la spécification.

Edit (août 2020) :

La commande a changé dans la dernière version. Ce qui suit fera l'affaire :

prism mock <your spec file>

Il accepte également swagger et postman doc.

1 votes

La page a été déplacée vers stoplight.io/platform/prism - Voir aussi github.com/stoplightio/prism

0 votes

Merci de clarifier "Open API (fka. Swagger)" ! Je suis un peu en retard à ce jeu.

0 votes

Il semble que cette option "run" soit dépassée et ne soit plus disponible dans la dernière version de Prism. Apparemment, elle a été remplacée par "mock", mais je n'ai pas trouvé de remplacement pour "--list".

35voto

Helen Points 13822

SwaggerHub fournit un serveur fantaisie pour les spécifications OpenAPI 2.0 et 3.0. Le mocking est supporté à la fois sur les plans gratuits et payants.

Pour utiliser le serveur fantaisie, importez votre spécification dans SwaggerHub et activez "API Auto Mocking". Les réponses fantaisie peuvent être JSON, YAML et XML, et sont générées sur la base de vos schémas de réponse et de l'attribut example , default y enum valeurs définies dans les schémas.

Divulgation : Je travaille pour la société qui fait SwaggerHub.

2 votes

Super ! Il fait exactement ce dont j'avais besoin ! Je le marque comme une réponse. La seule chose que je n'aime pas est le prix - il devrait y avoir un plan plus petit pour les freelances qui veulent juste avoir quelques API privées.

1 votes

Puis-je déployer un tel serveur localement sur mon réseau ? Ou cela peut être fait seulement en utilisant swaggerhub.com ?

2 votes

@IvanVinogradov SwaggerHub dispose de versions SaaS et On-Premise, et d'autres réponses mentionnent des outils de simulation que vous pouvez installer et utiliser localement.

17voto

u2ix Points 133

Imposteur est un un serveur fantaisie polyvalent et scriptable écrit en Java.

Très facile à mettre en place dans un Docker et fournit un Interface utilisateur Swagger pour jouer avec votre API fantaisie.

Voyons un exemple de configuration

  1. Avoir une configuration swagger prête dans un fichier dans le dossier config/petstore.yaml

     swagger: "2.0"
     info:
     version: 1.0.0
     title: Swagger Petstore
         .
         .
         .

Vous pouvez copier l'exemple de spécification swagger à partir de aquí .

  1. Créer un fichier de configuration pour Imposteur en config/openapi-plugin-petstore-config.json

     {
       "plugin": "com.gatehill.imposter.plugin.openapi.OpenApiPluginImpl",
       "specFile": "petstore.yaml"
     }

    Le nom du fichier de configuration doit se terminer par -config.json .

  2. Ejecutar Imposteur con Docker

    Assurez-vous que votre shell est placé dans le répertoire parent de config et exécuter

     docker run -ti -p 8443:8443 \
     -v $(pwd)/config:/opt/imposter/config \
     outofcoffee/imposter-openapi
  3. Abrir http://localhost:8443/_spec/ pour jouer avec votre serveur Mock et votre interface utilisateur Swagger.

    Imposter Mock API

4 votes

Divulgation : Je suis l'auteur du projet ci-dessus, Imposter. Puisque l'auteur de la question initiale demandait "la façon la plus simple de le faire", j'aimerais également vous indiquer la version hébergée gratuite d'Imposter, sur le site suivant remotebot.io/mocks - La version hébergée ne nécessite pas que vous exécutiez quoi que ce soit vous-même, il suffit de télécharger votre spécification d'API Swagger et une maquette sera créée instantanément.

0 votes

J'aime bien imposter et je le trouve facile à installer sur mon Mac. Je me demande juste s'il est possible d'utiliser imposter sans Docker, surtout sur les machines Windows.

1 votes

Bonjour @Akash, oui - voir la section "Exécution en tant qu'application Java autonome" dans la documentation : github.com/outofcoffee/imposter/blob/master/docs/

13voto

William Cheng Points 4302

Compte tenu de la spécification OpenAPI/Swagger, vous pouvez utiliser Swagger Codegen pour générer des stub de serveur dans différents frameworks de serveur (par exemple Java Spring. PHP Slim, Ruby on Rails5, etc).

Voici la documentation correspondante :

https://github.com/swagger-api/swagger-codegen/wiki/Server-stub-generator-HOWTO

MISE À JOUR : en mai 2018, une cinquantaine des principaux contributeurs de Swagger Codegen ont décidé de bifurquer le projet pour créer une version communautaire appelée Générateur OpenAPI . Veuillez vous référer à la QUESTIONS ET RÉPONSES pour les raisons derrière la fourche.

0 votes

Cela renverra-t-il des réponses json prédéfinies ? Pouvez-vous aider @wing328 ?

1 votes

Cela peut dépendre du générateur. Veuillez commencer la discussion dans github.com/swagger-api/swagger-codegen/issues à la place.

0 votes

J'ai ouvert un dossier il y a quelques jours mais pas encore de réponse : github.com/swagger-api/swagger-codegen/issues/5310 J'ai également essayé d'utiliser l'inflecteur, mais sans succès. Comment puis-je obtenir des réponses json prédéfinies à renvoyer en utilisant swagger ? Le développeur de l'interface utilisateur voudrait essayer l'API et voir un exemple de réponse.

4voto

arulraj.net Points 641

Voici le conteneur docker pour le serveur api fictif à partir de swagger yaml.

docker run -i \
    -p 8000:8000 \
    -v /path/to/file.yaml:/data/swagger.yaml \
    -t palo/swagger-api-mock:latest

En interne, on utilise swagger-mock-api

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X