Wie importiere ich Swagger-APIs in Postman?

101

Kürzlich habe ich erholsame APIs mit SpringMvc und swagger-ui (v2) geschrieben. Ich habe die Importfunktion in Postman bemerkt:

Geben Sie hier die Bildbeschreibung ein

Meine Frage ist also, wie man die Datei erstellt, die Postman benötigt.

Ich kenne Swagger nicht.

Dämon Coldmist
quelle
6
Mann das ist wirklich toll ... !!!
Adelin

Antworten:

111

Ich arbeite an PHP und habe Swagger 2.0 verwendet, um die APIs zu dokumentieren. Das Swagger-Dokument wird im laufenden Betrieb erstellt (zumindest verwende ich das in PHP). Das Dokument wird im JSON-Format generiert.

Beispieldokument

{
    "swagger": "2.0",
    "info": {
    "title": "Company Admin Panel",
        "description": "Converting the Magento code into core PHP and RESTful APIs for increasing the performance of the website.",
        "contact": {
        "email": "[email protected]"
        },
        "version": "1.0.0"
    },
    "host": "localhost/cv_admin/api",
    "schemes": [
    "http"
],
    "paths": {
    "/getCustomerByEmail.php": {
        "post": {
            "summary": "List the details of customer by the email.",
                "consumes": [
                "string",
                "application/json",
                "application/x-www-form-urlencoded"
            ],
                "produces": [
                "application/json"
            ],
                "parameters": [
                    {
                        "name": "email",
                        "in": "body",
                        "description": "Customer email to ge the data",
                        "required": true,
                        "schema": {
                        "properties": {
                            "id": {
                                "properties": {
                                    "abc": {
                                        "properties": {
                                            "inner_abc": {
                                                "type": "number",
                                                    "default": 1,
                                                    "example": 123
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "xyz": {
                                        "type": "string",
                                            "default": "xyz default value",
                                            "example": "xyz example value"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                ],
                "responses": {
                "200": {
                    "description": "Details of the customer"
                    },
                    "400": {
                    "description": "Email required"
                    },
                    "404": {
                    "description": "Customer does not exist"
                    },
                    "default": {
                    "description": "an \"unexpected\" error"
                    }
                }
            }
        },
        "/getCustomerById.php": {
        "get": {
            "summary": "List the details of customer by the ID",
                "parameters": [
                    {
                        "name": "id",
                        "in": "query",
                        "description": "Customer ID to get the data",
                        "required": true,
                        "type": "integer"
                    }
                ],
                "responses": {
                "200": {
                    "description": "Details of the customer"
                    },
                    "400": {
                    "description": "ID required"
                    },
                    "404": {
                    "description": "Customer does not exist"
                    },
                    "default": {
                    "description": "an \"unexpected\" error"
                    }
                }
            }
        },
        "/getShipmentById.php": {
        "get": {
            "summary": "List the details of shipment by the ID",
                "parameters": [
                    {
                        "name": "id",
                        "in": "query",
                        "description": "Shipment ID to get the data",
                        "required": true,
                        "type": "integer"
                    }
                ],
                "responses": {
                "200": {
                    "description": "Details of the shipment"
                    },
                    "404": {
                    "description": "Shipment does not exist"
                    },
                    "400": {
                    "description": "ID required"
                    },
                    "default": {
                    "description": "an \"unexpected\" error"
                    }
                }
            }
        }
    },
    "definitions": {

    }
}

Dies kann wie folgt in Postman importiert werden.

  1. Klicken Sie auf die Schaltfläche " Importieren " in der oberen linken Ecke der Postman-Benutzeroberfläche.
  2. Sie sehen mehrere Optionen zum Importieren des API-Dokuments. Klicken Sie auf " Rohtext einfügen ".
  3. Fügen Sie das JSON-Format in den Textbereich ein und klicken Sie auf Importieren.
  4. Sie sehen alle Ihre APIs als " Postman Collection " und können sie vom Postman aus verwenden.

JSON in Postman importieren

Importierte APIs

Sie können auch "Aus Link importieren" verwenden. Fügen Sie hier die URL ein, die das JSON-Format der APIs aus dem Swagger oder einem anderen API-Dokument-Tool generiert.

Dies ist meine JSON-Generierungsdatei (Document). Es ist in PHP. Ich habe keine Ahnung von JAVA zusammen mit Swagger.

<?php
require("vendor/autoload.php");
$swagger = \Swagger\scan('path_of_the_directory_to_scan');
header('Content-Type: application/json');
echo $swagger;
JDpawar
quelle
1
danke, aber jetzt ist das problem, wie ich die datei von swagger-ui exportieren kann? und der link ist nutzlos.
Demon Coldmist
@DemonColdmist Ich habe den Code zum Generieren der API hinzugefügt. Grundsätzlich durchsucht es das gesamte Verzeichnis, überprüft die Anmerkungen und gibt die JSON / YAML-Ausgabe aus. Entschuldigung, aber ich habe Swagger nicht mit JAVA verwendet.
JDpawar
Danke, wenn es in PHP exportiert werden könnte, dann auch Java. Ich werde es in Java übersetzen.
Dämon Coldmist
2
In einer Java-App, die die Abhängigkeit springfox-swagger2 verwendet, können Sie den JSON wie in dieser Antwort beschrieben in Postman importieren lassen, indem Sie einen Browser öffnen und zu localhost gehen: 8080 / v2 / api-docs
Nacho Mezzadra
1
@JDpawar Danke, der Import ist erfolgreich, aber es werden keine Post-Informationen in Postman für eine POST-API generiert. irgendwelche Ideen?
user1559625
30

Mit .Net Core ist es jetzt sehr einfach:

  1. Sie finden die JSON-URL auf Ihrer Prahlerseite:

Geben Sie hier die Bildbeschreibung ein

  1. Klicken Sie auf diesen Link und kopieren Sie die URL
  2. Gehen Sie nun zu Postman und klicken Sie auf Importieren:

Geben Sie hier die Bildbeschreibung ein

  1. Wählen Sie aus, was Sie benötigen, und Sie erhalten eine schöne Sammlung von Endpunkten:

Geben Sie hier die Bildbeschreibung ein

Mik
quelle
7

Die akzeptierte Antwort ist korrekt, aber ich werde die vollständigen Schritte für neu schreiben java.

Ich benutze derzeit Swagger V2mit Spring Boot 2und es ist unkompliziert 3-Schritt-Prozess.

Schritt 1: Fügen Sie der pom.xmlDatei die erforderlichen Abhängigkeiten hinzu . Die zweite Abhängigkeit ist optional. Verwenden Sie sie nur, wenn Sie sie benötigen Swagger UI.

        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

Schritt 2: Konfigurationsklasse hinzufügen

@Configuration
@EnableSwagger2
public class SwaggerConfig {

     public static final Contact DEFAULT_CONTACT = new Contact("Usama Amjad", "https://stackoverflow.com/users/4704510/usamaamjad", "[email protected]");
      public static final ApiInfo DEFAULT_API_INFO = new ApiInfo("Article API", "Article API documentation sample", "1.0", "urn:tos",
              DEFAULT_CONTACT, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList<VendorExtension>());

    @Bean
    public Docket api() {
        Set<String> producesAndConsumes = new HashSet<>();
        producesAndConsumes.add("application/json");
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(DEFAULT_API_INFO)
                .produces(producesAndConsumes)
                .consumes(producesAndConsumes);

    }
}

Schritt 3: Setup abgeschlossen und jetzt müssen Sie APIs in dokumentierencontrollers

    @ApiOperation(value = "Returns a list Articles for a given Author", response = Article.class, responseContainer = "List")
    @ApiResponses(value = { @ApiResponse(code = 200, message = "Success"),
            @ApiResponse(code = 404, message = "The resource you were trying to reach is not found") })
    @GetMapping(path = "/articles/users/{userId}")
    public List<Article> getArticlesByUser() {
       // Do your code
    }

Verwendung:

Sie können auf Ihre Dokumentation zugreifen, indem Sie sie http://localhost:8080/v2/api-docseinfach kopieren und in Postman einfügen, um die Sammlung zu importieren.

Geben Sie hier die Bildbeschreibung ein

Optionale Swagger-Benutzeroberfläche: Sie können die eigenständige Benutzeroberfläche auch ohne einen anderen Rest-Client über verwenden, http://localhost:8080/swagger-ui.htmlund es ist ziemlich gut, dass Sie Ihre Dokumentation problemlos hosten können.

Geben Sie hier die Bildbeschreibung ein

UsamaAmjad
quelle
3
Fehler beim Importieren: Fehler beim Importieren von Swagger 2.0: (Patchable) parameter.type ist für Nicht-Body-Parameter obligatorisch
Ramraj
-1
  • Klicken Sie auf die orangefarbene Schaltfläche ("Dateien auswählen")
  • Navigieren Sie zum Swagger-Dokument (swagger.yaml).
  • Nach Auswahl der Datei wird in POSTMAN eine neue Sammlung erstellt. Es enthält Ordner, die auf Ihren Endpunkten basieren.

Sie können auch einige Beispiel-Swagger-Dateien online abrufen, um dies zu überprüfen (wenn Sie Fehler in Ihrem Swagger-Dokument haben).

Ashwini Kumar
quelle
Können Sie mir zeigen, wie man swagger.yaml exportiert? Ich verwende swagger-ui in SpringMvc.
Demon Coldmist
Woher möchten Sie Swagger exportieren? Verwenden Sie Swagger bereits, um Ihre YAML zu verfassen?
Ashwini Kumar