web-dev-qa-db-fra.com

comment exporter des apis swagger en postier

Récemment, j’ai écrit des apis reposants avec SpringMvc et swagger-ui (v2) .Aujourd'hui, j’ai remarqué le bouton Import au-dessus du facteur.Et j’ai Je viens de voir le commentaire "Importer une collection Postman, un environnement, un vidage de données, une commande curl ou un fichier RAML/WADL/Swagger (v1/v2)/Runscope."  enter image description here

Au début, j'avais goûté, mais aucune réponse ne satisfaisait ma situation.

Ma question est donc de savoir comment créer le fichier dont le facteur avait besoin. En passant, je ne suis pas familier avec swagger.

26
Demon Coldmist

Je travaille sur PHP et j'ai utilisé Swagger 2.0 pour documenter les API. Le document Swagger est créé à la volée (du moins, c’est ce que j’utilise en PHP). Le document est généré au format JSON.

Exemple de document

{
    "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": {

    }
}

Ceci peut être importé dans Postman comme suit.

  1. Cliquez sur le bouton 'Import' dans le coin supérieur gauche de l'interface utilisateur de Postman.
  2. Vous verrez plusieurs options pour importer le document API. Cliquez sur 'Coller le texte brut'.
  3. Collez le format JSON dans la zone de texte et cliquez sur Importer.
  4. Vous verrez toutes vos API sous le nom 'Postman Collection' et vous pourrez les utiliser à partir de Postman.

 Importing the JSON into Postman

 Imported APIs

Vous pouvez également utiliser "Importer du lien". Collez ici l'URL qui génère le format JSON des API à partir de Swagger ou de tout autre outil Document API.

Ceci est mon fichier de génération de document (JSON). C'est en PHP. Je n'ai aucune idée de Java avec Swagger.

<?php
require("vendor/autoload.php");
$swagger = \Swagger\scan('path_of_the_directory_to_scan');
header('Content-Type: application/json');
echo $swagger;
26
JDpawar

La réponse acceptée est correcte mais je vais récrire les étapes complètes pour Java.

J'utilise actuellement Swagger V2 avec Spring Boot 2 et le processus en 3 étapes est simple.

Étape 1: Ajoutez les dépendances requises dans le fichier pom.xml. La deuxième dépendance est facultative, utilisez-la uniquement si vous avez besoin de 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>

Étape 2: Ajouter une classe de configuration

@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);

    }
}

Étape 3: L'installation est terminée et vous devez maintenant documenter les API dans controllers

    @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
    }

Utilisation: 

Vous pouvez accéder à votre documentation à partir de http://localhost:8080/v2/api-docs. Il vous suffit de la copier et de la coller dans Postman pour importer une collection.

 enter image description here

Facultatif Interface utilisateur Swagger: Vous pouvez également utiliser une interface utilisateur autonome sans autre client de repos via http://localhost:8080/swagger-ui.html. C'est très bien, vous pouvez héberger votre documentation sans tracas.

 enter image description here

2
UsamaAmjad
  • Cliquez sur le bouton orange ("choisir les fichiers")
  • Accédez au doc ​​Swagger (swagger.yaml)
  • Après avoir sélectionné le fichier, une nouvelle collection est créée dans POSTMAN. Il contiendra des dossiers basés sur vos points finaux. 

Vous pouvez également obtenir des exemples de fichiers swagger en ligne pour le vérifier (si votre doc swagger contient des erreurs).

0
Ashwini Kumar