Jak zaimportować API Swaggera do Postmana?

120

Niedawno napisałem restful API ze SpringMvc i swagger-ui (v2). Zauważyłem funkcję Import w Postman:

wprowadź opis obrazu tutaj

Więc moje pytanie brzmi: jak stworzyć plik, którego potrzebował Listonosz?

Nie znam Swaggera.

Demon Coldmist
źródło
6
Człowieku, to jest naprawdę niesamowite ... !!!
Adelin,

Odpowiedzi:

127

Pracuję na PHP i użyłem Swagger 2.0 do udokumentowania API. Dokument Swagger jest tworzony w locie (przynajmniej tego używam w PHP). Dokument jest generowany w formacie JSON.

Przykładowy dokument

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

    }
}

Można to zaimportować do programu Postman w następujący sposób.

  1. Kliknij przycisk „ Importuj ” w lewym górnym rogu interfejsu Postman.
  2. Zobaczysz wiele opcji importowania dokumentu API. Kliknij „ Wklej surowy tekst ”.
  3. Wklej format JSON w polu tekstowym i kliknij importuj.
  4. Wszystkie swoje interfejsy API będą widoczne jako „ Kolekcja Listonosza ” i będziesz mógł z nich korzystać z poziomu Listonosza.

Importowanie JSON do Postman

Zaimportowane interfejsy API

Możesz także użyć opcji „Importuj z łącza”. Tutaj wklej adres URL, który generuje format JSON interfejsów API z narzędzia Swagger lub dowolnego innego narzędzia dokumentu API.

To jest plik generowania mojego dokumentu (JSON). Jest w PHP. Nie mam pojęcia o JAVA razem z Swaggerem.

<?php
require("vendor/autoload.php");
$swagger = \Swagger\scan('path_of_the_directory_to_scan');
header('Content-Type: application/json');
echo $swagger;
JDpawar
źródło
1
dzięki, ale teraz problem polega na tym, jak mogę wyeksportować plik z swagger-ui? A link jest bezużyteczny.
Demon Coldmist
@DemonColdmist Dodałem kod do generowania API. Zasadniczo skanuje cały katalog, sprawdza adnotacje i generuje dane wyjściowe JSON / YAML. Przepraszam, ale nie używałem Swaggera z JAVĄ.
JDpawar
dzięki, jeśli można to wyeksportować w PHP, tak samo jak Java. Przetłumaczę to na Javę.
Demon Coldmist,
2
W aplikacji java korzystającej z zależności springfox-swagger2 możesz zaimportować JSON do Postmana, jak opisano w tej odpowiedzi, otwierając przeglądarkę i kierując się na localhost: 8080 / v2 / api-docs
Nacho Mezzadra
1
@JDpawar Dzięki, import się powiódł, ale nie generuje żadnych informacji „body” w listonoszach dla żadnego interfejsu API POST. jakieś pomysły?
user1559625
36

Dzięki .Net Core jest to teraz bardzo proste:

  1. Idziesz i znajdujesz URL JSON na swojej stronie swagger:

wprowadź opis obrazu tutaj

  1. Kliknij ten link i skopiuj adres URL
  2. Teraz przejdź do Postman i kliknij Importuj:

wprowadź opis obrazu tutaj

  1. Wybierz to, czego potrzebujesz, a otrzymasz niezłą kolekcję punktów końcowych:

wprowadź opis obrazu tutaj

Mik
źródło
8

Zaakceptowana odpowiedź jest poprawna, ale przepiszę wszystkie kroki dla java.

Obecnie używam Swagger V2z Spring Boot 2i jest to prosty 3-etapowy proces.

Krok 1: Dodaj wymagane zależności w pom.xmlpliku. Druga zależność jest opcjonalna, używaj jej tylko wtedy, gdy potrzebujesz 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>

Krok 2: Dodaj klasę konfiguracji

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

    }
}

Krok 3: Konfiguracja zakończona i teraz musisz udokumentować interfejsy API wcontrollers

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

Stosowanie:

Możesz uzyskać dostęp do swojej dokumentacji, po http://localhost:8080/v2/api-docsprostu skopiuj ją i wklej w programie Postman, aby zaimportować kolekcję.

wprowadź opis obrazu tutaj

Opcjonalny interfejs Swagger: Możesz także używać samodzielnego interfejsu użytkownika bez żadnego innego klienta resztowego za pośrednictwem http://localhost:8080/swagger-ui.htmli jest całkiem niezły, możesz bezproblemowo hostować swoją dokumentację.

wprowadź opis obrazu tutaj

UsamaAmjad
źródło
3
Błąd podczas importowania: Błąd podczas importowania Swagger 2.0: parametr (Patchable). Typ jest obowiązkowy dla parametrów innych niż body
Ramraj
0

Możesz to zrobić: Postman -> Import -> Link -> {root_url}/v2/api-docs

logbasex
źródło
-1
  • Kliknij pomarańczowy przycisk („wybierz pliki”)
  • Przejdź do dokumentu Swagger (swagger.yaml)
  • Po wybraniu pliku w POSTMAN zostanie utworzona nowa kolekcja. Będzie zawierał foldery oparte na Twoich punktach końcowych.

Możesz również pobrać przykładowe pliki swagger online, aby to sprawdzić (jeśli masz błędy w swoim dokumencie swagger).

Ashwini Kumar
źródło
czy możesz mi pokazać, jak wyeksportować plik swagger.yaml? Używam swagger-ui w SpringMvc.
Demon Coldmist
skąd chcesz wyeksportować dumę? czy już używasz swaggera do tworzenia swojego YAML?
Ashwini Kumar