Swagger API를 Postman으로 가져 오는 방법은 무엇입니까?


120

최근에 SpringMvc 와 swagger-ui (v2)로 편안한 API를 작성했습니다 . Postman에서 가져 오기 기능을 발견했습니다.

여기에 이미지 설명 입력

그래서 내 질문은 Postman이 필요한 파일을 만드는 방법입니다.

나는 Swagger에 익숙하지 않습니다.


6
정말 대단해 ... !!!
Adelin 2018 년

답변:


127

저는 PHP에서 작업하고 Swagger 2.0을 사용하여 API를 문서화했습니다. Swagger 문서는 즉석에서 작성됩니다 (적어도 PHP에서 사용하는 것입니다). 문서는 JSON 형식으로 생성됩니다.

샘플 문서

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

    }
}

다음과 같이 Postman으로 가져올 수 있습니다.

  1. Postman UI의 왼쪽 상단 에있는 ' 가져 오기 '버튼을 클릭합니다.
  2. API 문서를 가져 오는 여러 옵션이 표시됩니다. ' Raw Text 붙여 넣기 '를 클릭하십시오 .
  3. 텍스트 영역에 JSON 형식을 붙여넣고 가져 오기를 클릭합니다.
  4. 모든 API가 ' Postman Collection '으로 표시되며 Postman에서 사용할 수 있습니다.

Postman으로 JSON 가져 오기

가져온 API

'링크에서 가져 오기'를 사용할 수도 있습니다. 여기에 Swagger 또는 기타 API 문서 도구에서 API의 JSON 형식을 생성하는 URL을 붙여 넣으십시오.

이것은 내 문서 (JSON) 생성 파일입니다. PHP에 있습니다. Swagger와 함께 JAVA에 대해 전혀 모릅니다.

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

1
고맙지 만 이제 문제는 swagger-ui에서 파일을 어떻게 내보낼 수 있습니까? 그리고 링크는 쓸모가 없습니다.
악마 Coldmist

@DemonColdmist API를 생성하는 코드를 추가했습니다. 기본적으로 전체 디렉토리를 스캔하고 주석을 확인하고 JSON / YAML 출력을 만듭니다. 죄송합니다. JAVA에서 Swagger를 사용하지 않았습니다.
JDpawar

감사합니다. PHP로 내보낼 수 있다면 Java도 마찬가지입니다. 나는 그것을 자바로 번역 할 것이다.
Demon Coldmist 2016-08-23

2
브라우저를 열고 향하고에 의해이 답변에 설명 된대로 springfox-swagger2 의존성을 사용하여 자바 응용 프로그램에서는 우체부에서 가져올 수있는 JSON을 얻을 수 8080 / V2 / API-문서 : 로컬 호스트
나쵸 Mezzadra

1
@JDpawar 감사합니다. 가져 오기는 성공했지만 POST API에 대해 우편 배달부에서 '본문'정보를 생성하지 않습니다. 어떤 아이디어?
user1559625

36

.Net Core를 사용하면 이제 매우 쉽습니다.

  1. Swagger 페이지에서 JSON URL을 찾으십시오.

여기에 이미지 설명 입력

  1. 해당 링크를 클릭하고 URL을 복사하십시오.
  2. 이제 Postman으로 이동하여 가져 오기를 클릭하십시오.

여기에 이미지 설명 입력

  1. 필요한 것을 선택하면 멋진 엔드 포인트 컬렉션이 생성됩니다.

여기에 이미지 설명 입력


8

허용되는 답변은 정확하지만에 대한 전체 단계를 다시 작성하겠습니다 java.

현재 Swagger V2with를 사용 하고 Spring Boot 2있으며 간단한 3 단계 프로세스입니다.

1 단계 :pom.xml 파일에 필요한 종속성을 추가합니다 . 두 번째 종속성은 선택 사항이며 필요한 경우에만 사용합니다 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 단계 : 구성 클래스 추가

@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 단계 : 설정이 완료되었으며 이제 API를 문서화해야합니다.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
    }

용법:

문서를 http://localhost:8080/v2/api-docs복사하여 Postman에 붙여 넣기 만하면 문서에 액세스하여 컬렉션을 가져올 수 있습니다.

여기에 이미지 설명 입력

선택적 Swagger UI : 다른 클라이언트를 통해 다른 클라이언트없이 독립형 UI를 사용할 수도 있습니다. http://localhost:8080/swagger-ui.html꽤 좋습니다. 번거 로움없이 문서를 호스팅 할 수 있습니다.

여기에 이미지 설명 입력


3
가져 오는 동안 오류가 발생했습니다. Swagger 2.0을 가져 오는 동안 오류가 발생했습니다 : (패치 가능) parameter.type은 비 바디 매개 변수에 필수입니다
Ramraj

0

그렇게 할 수 있습니다 : Postman-> Import-> Link-> {root_url}/v2/api-docs


-1
  • 주황색 버튼을 클릭합니다 ( "파일 선택").
  • Swagger 문서 (swagger.yaml)를 찾습니다.
  • 파일을 선택하면 POSTMAN에 새 컬렉션이 생성됩니다. 엔드 포인트를 기반으로하는 폴더가 포함됩니다.

이를 확인하기 위해 온라인으로 샘플 swagger 파일을 얻을 수도 있습니다 (Swagger 문서에 오류가있는 경우).


swagger.yaml을 내보내는 방법을 보여줄 수 있습니까? 저는 SpringMvc에서 swagger-ui를 사용하고 있습니다.
Demon Coldmist

swagger를 어디에서 내보내시겠습니까? 이미 swagger를 사용하여 YAML을 작성하고 있습니까?
애쉬 위니 쿠마
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.