Je veux configurer un serveur fictif pour python-flask en quelques secondes en utilisant swagger-codegen.

introduction

Je ne connais pas les serveurs Web dans mon travail Nous aimerions présenter swagger-codegen à ceux qui ont été invités à configurer un serveur Web pour PoC (et en quelques secondes). (Il peut ne pas être possible de configurer en quelques secondes, mais si vous écrivez les spécifications de l'API dans yaml, vous pouvez facilement configurer le serveur.)

À propos de swagger-codegen

swagger-codegen définit les spécifications d'API en YAML (ou JSON), Créer un serveur fictif selon la définition de l'API En outre, vous pouvez créer un écran d'interface utilisateur du navigateur où vous pouvez accéder à l'API comme indiqué ci-dessous.

image.png

environnement d'utilisation

Installation JRE

Si vous n'avez pas JRE, téléchargez et installez à partir de ce qui suit.

Obtenez swagger-codegen-cli.jar

Obtenu à partir du référentiel maven.

Cette fois, j'ai utilisé le 2.4.15 suivant.

Définir la spécification d'API dans swagger.yaml

Si vous définissez la spécification API, vous pouvez créer un serveur fictif en fonction de la définition. Créez un fichier comme celui ci-dessous.

swagger.yaml


swagger: "2.0"
info:
  description: "Ceci est une API pour les animaleries."
  version: "1.0.0"
  title: "Petstore API"
  termsOfService: "http://swagger.io/terms/"
  contact:
    email: "[email protected]"
  license:
    name: "Apache 2.0"
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
paths:
  /pet/{petId}:
    get:
      summary: "API d'information sur les animaux de compagnie"
      description: "Renvoie des informations pour le petId spécifié"
      parameters:
      - name: "petId"
        in: "path"
        description: "ID de l'animal que vous souhaitez obtenir"
        required: true
        type: "integer"
        format: "int64"
      responses:
        200:
          description: "Réponse en cas de succès"
          schema:
            type: "object"
            properties:
              id:
                type: "integer"
                format: "int64"
              name:
                type: "string"
                example: "doggie"

Veuillez vous référer à ce qui suit pour la signification de la description dans swagger.yml.

Créer un serveur simulé

Cette fois, je veux utiliser le python familier, donc je vais créer un serveur simulé avec pytoh-flask.

> java -jar {Fichier jar téléchargé} generate -i swagger.yaml -l python-flask -o test-server

Vous pouvez créer Go, Node.js, Ruby on Rails, peu importe en changeant l'option -l. Voir ci-dessous ce que l'option -l a d'autre.

Structure de dossier créée

Dans le cas de python-flask, vous pouvez créer un serveur simulé comme celui-ci. Un Dockerfile est également créé, il peut donc être utilisé comme conteneur Docker.

> tree server
server
├── Dockerfile
├── README.md
├── git_push.sh
├── requirements.txt
├── setup.py
├── swagger_server
│   ├── __init__.py
│   ├── __main__.py
│   ├── controllers
│   │   ├── __init__.py
│   │   └── default_controller.py
│   ├── encoder.py
│   ├── models
│   │   ├── __init__.py
│   │   ├── base_model_.py
│   │   └── inline_response200.py
│   ├── swagger
│   │   └── swagger.yaml
│   ├── test
│   │   ├── __init__.py
│   │   └── test_default_controller.py
│   └── util.py
├── test-requirements.txt
└── tox.ini

En cela, le traitement proprement dit est décrit dans la partie pet_pet_id_get de default_controller.py.

default_controller.py


import connexion
import six

from swagger_server.models.inline_response200 import InlineResponse200  # noqa: E501
from swagger_server import util


def pet_pet_id_get(petId):  # noqa: E501
    """API d'information sur les animaux de compagnie

Renvoie des informations pour le petId spécifié# noqa: E501

    :param petId:ID de l'animal que vous souhaitez obtenir
    :type petId: int

    :rtype: InlineResponse200
    """
    return 'do some magic!'

Essayez de l'exécuter dans l'environnement conda sous Windows.

Installez les packages requis. L'environnement créé par swagger-codegen écrit uniquement pip requirements.txt, Dans l'environnement conda, vous pouvez l'exécuter en installant ce qui suit.

> conda install connexion
> conda install swagger-ui-bundle

Commencez.

> cd test-server
> python -m swagger_server

Si vous accédez aux éléments suivants à partir d'un navigateur et que vous voyez l'écran, vous pouvez le démarrer.

Je vous remercie pour votre travail acharné!

Recommended Posts

Je veux configurer un serveur fictif pour python-flask en quelques secondes en utilisant swagger-codegen.
Configurez un serveur Web local en 30 secondes en utilisant http.server en python 3
Je veux imprimer dans la notation d'inclusion
Configurer un serveur de messagerie avec Twisted
Configurer un serveur HTTPS simple avec Python 3
Je veux créer une fenêtre avec Python
Configurez un serveur SMTP de test en Python.
Configurer un serveur UDP en langage C
Comment configurer un serveur de développement local
Configurer un serveur SMTP simple en Python
Je souhaite définir un cycle de vie dans la définition de tâche d'ECS
Le programme Python est lent! Je veux accélérer! Dans ce cas ...
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
Comment configurer un environnement Python à l'aide de pyenv
Je veux faire la transition avec un bouton sur le ballon
Configurer un serveur de fichiers sur Ubuntu 20.04 à l'aide de Samba
Je veux écrire en Python! (2) Écrivons un test
Je veux échantillonner au hasard un fichier avec Python
Je veux travailler avec un robot en python.
Configurez un serveur gratuit sur AWS en 30 minutes
Je veux écrire en Python! (3) Utiliser des simulacres
Lorsque vous voulez plt.save dans l'instruction for
Trouvez une ligne directrice pour le nombre de processus / threads à définir sur le serveur d'applications
[Python] Je souhaite obtenir un ensemble commun entre numpy
J'ai fait un chronomètre en utilisant tkinter avec python
Je veux ajouter un joli complément à input () en python
Je veux créer un Dockerfile pour le moment.
Comment configurer un serveur SMTP simple qui peut être testé localement en Python
Je souhaite configurer un environnement de développement GUI avec Python ou Golang sur Mac
Je veux créer un fichier pip et le refléter dans le menu fixe
J'obtiens un attribut impossible à définir lors de l'utilisation de @property en python
Configurer un nœud pour faire MNIST sur ROS à l'aide de Tensorflow
[Salut Py (Partie 1)] Je veux faire quelque chose pour le moment, alors commencez par fixer un objectif.
Comment faire un modèle pour la détection d'objets avec YOLO en 3 heures
(Matplotlib) Je veux dessiner un graphique avec une taille spécifiée en pixels
Envoyez du courrier avec mailx à un serveur SMTP factice configuré avec python.
Je souhaite convertir une table convertie en PDF en Python en CSV
J'ai analysé les données Airbnb pour ceux qui veulent rester à Amsterdam
Je souhaite trier une liste dans l'ordre des autres listes
Essayez de mettre en place un environnement de test Vim assez sérieusement (pour Python)
Je veux colorer une partie de la chaîne Excel avec Python
Notes J'ai recherché la création d'outils de ligne de commande en Python
Je souhaite créer une application Web en utilisant React et Python flask
Je veux faire un patch monkey seulement en partie en toute sécurité avec Python
Configurer un serveur Samba avec Docker
Comment configurer SVM à l'aide d'Optuna
Je veux créer un environnement Python
Je veux intégrer Matplotlib dans PySimpleGUI
Je veux créer un bel environnement de développement Python pour mon nouveau Mac
Je souhaite créer une file d'attente prioritaire pouvant être mise à jour avec Python (2.7)
Si vous souhaitez afficher la valeur à l'aide des choix du modèle dans le modèle Django
[Django memo] Je souhaite définir à l'avance les informations de l'utilisateur connecté dans le formulaire.
Je veux ajouter du silence pendant 1 seconde au début d'un fichier wav
Je souhaite voir une liste de fichiers WebDAV dans le module Requêtes
J'ai recherché les compétences nécessaires pour devenir ingénieur web avec Python
Je veux faire du machine learning même sans serveur - Time Series Edition -
Notez que j'étais accro à la configuration de TensowFlow
Je veux faire de matplotlib un thème sombre
Configurer un serveur HTTPS simple avec asyncio