테스트를 진행할 예제: http://localhost:8080/swagger-ui/

 

어노테이션 사용 예제

@Api: Swagger를 이용할 때 API Controller의 설명을 지정해 줄 수 있다.

// @Api: Swagger를 이용할 때 API Controller의 설명을 지정해 줄 수 있다.
@Api(tags = {"API 정보를 제공하는 Controller"})
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

화면

 

Get 방식 파라미터 변수마다 설명을 달아주는 방법

@ApiParam: 파라미터 하나 하나 설명을 달아 줄 때 사용

@ApiImplicitParams: 메소드 단위에서 파라미터 설명을 달아 줄 때 사용

    // 파라미터 값을 받는 예제
    // 파라미터의 하나 하나설명을 달아주는 방법: @ApiParam
//    @GetMapping("/plus/{x}")
//    public int plus(
//                    @ApiParam(value = "X값")
//                    @PathVariable int x,
//                    @ApiParam(value = "Y값")
//                    @RequestParam int y){
//        return x + y;
//    }

    // 파라미터의 배열의 형태로 설명을 달아주는 방법: @ApiImplicitParams
    @GetMapping("/plus/{x}")
    @ApiImplicitParams(
            {
              @ApiImplicitParam(value = "x 값", name = "x", required = true, dataType = "int", paramType = "path"),
              @ApiImplicitParam(value = "y 값", name = "y", required = true, dataType = "int", paramType = "query")
            }
    )
    public int plus(@PathVariable int x, @RequestParam int y){
        return x + y;
    }

화면

 

DTO로 데이터를 전달 받을 경우 설명을 붙여주는 방법

controller 코드

@ApiOperation: 해당 메소드의 설명을 붙여줄 수 있다.

@ApiResponse: 각 응답 코드의 설명을 붙여줄 수 있다.

    // DTO를 사용할 경우 해당 요소마다 설명을 붙여주는 예제 DTO 내 변수에 설명을 붙여준다.
    // @ApiOperation: 해당 메소드의 설명을 붙여주는 방법
    @ApiOperation(value = "사용자의 이름과 나이를 리턴 하는 메소드")
    // @ApiResponse: 응답 코드의 따른 설명을 붙여주는 방법
    @ApiResponse(code = 502, message = "사용자의 나이가 10살 이하일때")
    @GetMapping("/user")
    public UserRes user(UserReq userReq){

        return new UserRes(userReq.getName(), userReq.getAge());
    }

DTO 코드

전달 될 때 DTO

@ApiModelProperty: 어노테이션을 이용해서 각 요소의 설명을 달아 줄 수 있다.

package com.example.swagger.dto;

import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserReq {

    // Swagger의 설명을 붙여주는 방법: @ApiModelProperty
    @ApiModelProperty(value = "Req 사용자의 이름", example = "steve", required = true)
    private String name;

    @ApiModelProperty(value = "Req 사용자의 나이", example = "10", required = true)
    private int age;
}

전달 받을 DTO

@ApiModelProperty: 어노테이션을 이용해서 각 요소의 설명, 기본값을 설정해서 어떠한 값이 나올지 예상할 수 있다.

package com.example.swagger.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class UserRes {

    @ApiModelProperty(value = "Res: 사용자의 이름", example = "steve", required = true)
    private String name;

    @ApiModelProperty(value = "Res: 사용자의 나이", example = "22", required = true)
    private int age;
}

 

화면

 

Post방식의 예제

Get 방식과 같은 방법으로 설명을 달아 줄 수 있다.

    // post 방식 또한 같은방법으로 설명을 붙여줄 수 있다.
    @PostMapping("/user")
    public UserRes userPost(@RequestBody UserReq req){
        return new UserRes(req.getName(), req.getAge());
    }

'Spring > Swagger' 카테고리의 다른 글

Swagger 설정 1  (0) 2021.07.03
Swagger 개념  (0) 2021.07.03

+ Recent posts