Swagger API'leri Postman'a nasıl aktarılır?


115

Son zamanlarda SpringMvc ve swagger-ui (v2) ile dinlendirici API'ler yazdım . Postacı'da İçe Aktarma işlevini fark ettim:

görüntü açıklamasını buraya girin

Öyleyse sorum şu, Postacının ihtiyaç duyduğu dosyayı nasıl oluşturacağım?

Swagger'a aşina değilim.


6
Adamım bu gerçekten harika ... !!!
Adelin

Yanıtlar:


121

PHP üzerinde çalışıyorum ve API'leri belgelemek için Swagger 2.0'ı kullandım. Swagger Belgesi anında oluşturulur (en azından PHP'de kullandığım şey budur). Belge, JSON biçiminde oluşturulur.

Örnek belge

{
    "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": "jaydeep1012@gmail.com"
        },
        "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": {

    }
}

Bu, Postacı'ya aşağıdaki şekilde aktarılabilir.

  1. Postacı arayüzünün sol üst köşesindeki ' İçe Aktar ' düğmesine tıklayın.
  2. API belgesini içe aktarmak için birden çok seçenek göreceksiniz. ' Ham Metni Yapıştır'a tıklayın .
  3. JSON formatını metin alanına yapıştırın ve içe aktar'a tıklayın.
  4. Tüm API'lerinizi ' Postman Koleksiyonu ' olarak göreceksiniz ve Postman'dan kullanabilirsiniz.

JSON'u Postman'a İçe Aktarma

İçe aktarılan API'ler

Ayrıca 'Bağlantıdan İçe Aktar'ı da kullanabilirsiniz. Swagger veya herhangi bir API Belgesi aracından API'lerin JSON formatını oluşturan URL'yi buraya yapıştırın.

Bu benim Belge (JSON) oluşturma dosyam. PHP'de. Swagger ile birlikte JAVA hakkında hiçbir fikrim yok.

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

1
teşekkürler, ama şimdi sorun, dosyayı swagger-ui'den nasıl dışa aktarabilirim? Ve bağlantı işe yaramaz.
Demon Coldmist

@DemonColdmist API'yi oluşturmak için kodu ekledim. Temel olarak, tüm dizini tarar, ek açıklamaları kontrol eder ve JSON / YAML çıktısını oluşturur. Üzgünüm ama Swagger'ı JAVA ile kullanmadım.
JDpawar

teşekkürler, eğer PHP'de dışa aktarılabiliyorsa, Java da öyle. Onu Java'ya çevireceğim.
Demon Coldmist

2
Springfox-swagger2 bağımlılığını kullanan bir java uygulamasında, bir tarayıcı açıp localhost'a
giderek JSON'un Postman'a aktarılmasını sağlayabilirsiniz

1
@JDpawar Teşekkürler, içe aktarma başarılı, ancak herhangi bir POST API için postacıda herhangi bir 'gövde' bilgisi üretmiyor. herhangi bir fikir?
user1559625

33

.Net Core ile artık çok kolay:

  1. Gidip JSON URL'sini havalı sayfanızda bulursunuz:

görüntü açıklamasını buraya girin

  1. Bu bağlantıyı tıklayın ve URL'yi kopyalayın
  2. Şimdi Postacı'ya gidin ve İçe Aktar'ı tıklayın:

görüntü açıklamasını buraya girin

  1. İhtiyacınız olanı seçin ve sonunda güzel bir uç nokta koleksiyonu elde edin:

görüntü açıklamasını buraya girin


8

Kabul edilen cevap doğru, ancak için tüm adımları yeniden yazacağım java.

Şu anda kullanıyorum Swagger V2ile Spring Boot 2ve basit 3 adım süreç.

1. Adım:pom.xml Dosyaya gerekli bağımlılıkları ekleyin . İkinci bağımlılık isteğe bağlıdır, yalnızca ihtiyacınız olduğunda kullanın 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>

2. Adım: Yapılandırma sınıfı ekleyin

@Configuration
@EnableSwagger2
public class SwaggerConfig {

     public static final Contact DEFAULT_CONTACT = new Contact("Usama Amjad", "https://stackoverflow.com/users/4704510/usamaamjad", "hello@email.com");
      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);

    }
}

3. Adım: Kurulum tamamlandı ve şimdi API'lericontrollers

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

Kullanım:

Dokümantasyonunuza http://localhost:8080/v2/api-docssadece kopyalayarak erişebilir ve koleksiyonu içe aktarmak için Postacı'ya yapıştırabilirsiniz.

görüntü açıklamasını buraya girin

İsteğe bağlı Swagger UI: Ayrıca başka bir dinlenme istemcisi olmadan bağımsız kullanıcı arayüzünü de kullanabilirsiniz http://localhost:8080/swagger-ui.htmlve oldukça iyidir, belgelerinizi herhangi bir güçlük çekmeden barındırabilirsiniz.

görüntü açıklamasını buraya girin


3
İçe aktarılırken hata: Swagger 2.0 içe aktarılırken hata: (Patchable) parameter.type vücut dışı parametreler için zorunlu
Ramraj

0

Bunu yapabilirsiniz: Postacı -> İçe Aktar -> Bağlantı -> {root_url}/v2/api-docs


-1
  • Turuncu düğmeyi tıklayın ("dosyaları seç")
  • Swagger belgesine göz atın (swagger.yaml)
  • Dosyayı seçtikten sonra, POSTMAN'da yeni bir koleksiyon oluşturulur. Uç noktalarınıza göre klasörler içerecektir.

Bunu doğrulamak için çevrimiçi olarak bazı örnek swagger dosyalarını da edinebilirsiniz (havalı belgenizde hatalar varsa).


swagger.yaml dosyasını nasıl dışa aktaracağımı bana gösterebilir misiniz? SpringMvc'de swagger-ui kullanıyorum.
Demon Coldmist

swagger'ı nereden ihraç etmek istersiniz? YAML'nizi yazmak için zaten swagger kullanıyor musunuz?
Ashwini Kumar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.