Ich möchte mit swagger-codegen in Sekundenschnelle einen Mock-Server für Python-Flask einrichten.

Einführung

Ich bin mit Webservern in meiner Arbeit nicht vertraut Wir möchten denjenigen, denen gesagt wurde, dass sie einen Webserver für PoC einrichten sollen (und in Sekunden), swagger-codegen vorstellen. (Die Einrichtung ist möglicherweise nicht in Sekunden möglich. Wenn Sie jedoch die API-Spezifikationen in yaml schreiben, können Sie den Server problemlos einrichten.)

Über Swagger-Codegen

swagger-codegen definiert API-Spezifikationen in YAML (oder JSON), Erstellen Sie einen Mock-Server gemäß der API-Definition Darüber hinaus können Sie einen Browser-UI-Bildschirm erstellen, auf dem Sie die API wie unten gezeigt aufrufen können.

image.png

Nutzungsumgebung

JRE-Installation

Wenn Sie nicht über JRE verfügen, laden Sie Folgendes herunter und installieren Sie es.

Holen Sie sich swagger-codegen-cli.jar

Wird aus dem Maven-Repository bezogen.

Dieses Mal habe ich das folgende 2.4.15 verwendet.

Definieren Sie die API-Spezifikation in swagger.yaml

Wenn Sie die API-Spezifikation definieren, können Sie einen Mock-Server gemäß der Definition erstellen. Erstellen Sie eine Datei wie die folgende.

swagger.yaml


swagger: "2.0"
info:
  description: "Dies ist eine API für Zoohandlungen."
  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: "Haustierinformations-API"
      description: "Gibt Informationen für die angegebene petId zurück"
      parameters:
      - name: "petId"
        in: "path"
        description: "ID des Haustieres, das Sie erhalten möchten"
        required: true
        type: "integer"
        format: "int64"
      responses:
        200:
          description: "Antwort auf Erfolg"
          schema:
            type: "object"
            properties:
              id:
                type: "integer"
                format: "int64"
              name:
                type: "string"
                example: "doggie"

Die Bedeutung der Beschreibung in swagger.yml finden Sie im Folgenden.

Erstellen Sie einen Mock-Server

Dieses Mal möchte ich die bekannte Python verwenden, also werde ich einen Mock-Server mit Pytoh-Flask erstellen.

> java -jar {JAR-Datei heruntergeladen} generate -i swagger.yaml -l python-flask -o test-server

Sie können Go, Node.js, Ruby on Rails erstellen, indem Sie die Option -l ändern. Weiter unten erfahren Sie, was die Option -l sonst noch bietet.

Ordnerstruktur erstellt

Im Fall von Python-Flask können Sie einen solchen Mock-Server erstellen. Eine Docker-Datei wird ebenfalls erstellt, sodass sie als Docker-Container verwendet werden kann.

> 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

Hierbei wird die eigentliche Verarbeitung im Teil pet_pet_id_get von default_controller.py beschrieben.

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
    """Haustierinformations-API

Gibt Informationen für die angegebene petId zurück# noqa: E501

    :param petId:ID des Haustieres, das Sie erhalten möchten
    :type petId: int

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

Versuchen Sie, es in der Conda-Umgebung unter Windows auszuführen.

Installieren Sie die erforderlichen Pakete. Die von swagger-codegen erstellte Umgebung schreibt nur pip require.txt, In der Conda-Umgebung können Sie es ausführen, indem Sie Folgendes installieren.

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

Anlaufen.

> cd test-server
> python -m swagger_server

Wenn Sie über einen Browser auf Folgendes zugreifen und den Bildschirm sehen, können Sie ihn starten.

Danke für deine harte Arbeit!

Recommended Posts

Ich möchte mit swagger-codegen in Sekundenschnelle einen Mock-Server für Python-Flask einrichten.
Richten Sie mit http.server in Python 3 in 30 Sekunden einen lokalen Webserver ein
Ich möchte in der Einschlussnotation drucken
Richten Sie mit Twisted einen Mailserver ein
Richten Sie mit Python 3 einen einfachen HTTPS-Server ein
Ich möchte mit Python ein Fenster erstellen
Richten Sie einen Test-SMTP-Server in Python ein.
Richten Sie einen UDP-Server in der Sprache C ein
So richten Sie einen lokalen Entwicklungsserver ein
Richten Sie einen einfachen SMTP-Server in Python ein
Ich möchte einen Lebenszyklus in der Aufgabendefinition von ECS festlegen
Python-Programm ist langsam! Ich möchte beschleunigen! In einem solchen Fall ...
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
So richten Sie eine Python-Umgebung mit pyenv ein
Ich möchte mit einem Knopf am Kolben übergehen
Richten Sie mit Samba einen Dateiserver unter Ubuntu 20.04 ein
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Ich möchte eine Datei mit Python zufällig testen
Ich möchte mit einem Roboter in Python arbeiten.
Richten Sie in 30 Minuten einen kostenlosen Server unter AWS ein
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Wenn Sie in der for-Anweisung plt.save möchten
Suchen Sie eine Richtlinie für die Anzahl der Prozesse / Threads, die auf dem Anwendungsserver festgelegt werden sollen
[Python] Ich möchte einen gemeinsamen Satz zwischen numpy erhalten
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Ich möchte vorerst eine Docker-Datei erstellen.
So richten Sie einen einfachen SMTP-Server ein, der lokal in Python getestet werden kann
Ich möchte eine GUI-Entwicklungsumgebung mit Python oder Golang auf dem Mac einrichten
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Bei Verwendung von @property in Python wird ein Attribut nicht festgelegt
Richten Sie mit Tensorflow einen Knoten für MNIST auf ROS ein
[Hi Py (Teil 1)] Ich möchte vorerst etwas machen, also setze zuerst ein Ziel.
So erstellen Sie mit YOLO in 3 Stunden ein Modell für die Objekterkennung
(Matplotlib) Ich möchte ein Diagramm mit einer in Pixel angegebenen Größe zeichnen
Senden Sie E-Mails mit mailx an einen mit Python eingerichteten Dummy-SMTP-Server.
Ich möchte eine in Python in PDF konvertierte Tabelle wieder in CSV konvertieren
Ich habe Airbnb-Daten für diejenigen analysiert, die in Amsterdam bleiben möchten
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Versuchen Sie ernsthaft, eine Vim-Testumgebung einzurichten (für Python).
Ich möchte einen Teil der Excel-Zeichenfolge mit Python einfärben
Hinweise Ich habe nachgeschlagen, um Befehlszeilentools in Python zu erstellen
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Ich möchte Affenpatches nur teilweise sicher mit Python machen
Richten Sie mit Docker einen Samba-Server ein
So richten Sie SVM mit Optuna ein
Ich möchte eine Python-Umgebung erstellen
Ich möchte Matplotlib in PySimpleGUI einbetten
Ich möchte eine schöne Python-Entwicklungsumgebung für meinen neuen Mac erstellen
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Wenn Sie den Wert mithilfe von Auswahlmöglichkeiten in der Vorlage im Django-Modell anzeigen möchten
[Django-Memo] Ich möchte die angemeldeten Benutzerinformationen im Voraus im Formular festlegen.
Ich möchte dem Anfang einer WAV-Datei 1 Sekunde lang Stille hinzufügen
Ich möchte eine Liste der WebDAV-Dateien im Modul Anfragen anzeigen
Ich suchte nach den Fähigkeiten, die erforderlich sind, um Webingenieur bei Python zu werden
Ich möchte maschinelles Lernen auch ohne Server durchführen - Time Series Edition -
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Ich möchte Matplotlib zu einem dunklen Thema machen
Richten Sie einen einfachen HTTPS-Server mit Asyncio ein