코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

개발

[Swagger] Swagger란?

2024. 1. 13. 15:02

Swagger란?

Swagger란 개발한 Rest API를 편리하게 문서화해주고, 이를 통해서 관리 및 제3의 사용자가 편리하게 API를 호출해 보고 테스트할 수 있는 프로젝트이다.

Spring boot에서 Swagger를 사용하면, 컨트롤러에 명시된 어노테이션을 해석하여 API문서를 자동으로 만들어준다.

 


Swagger Annotation

 


사용 예시

build.gradle

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'

 

SwaggerConfig

@Configuration
@OpenAPIDefinition
public class SwaggerConfig {

    /**
     * 명세서 정보
     */
    @Bean
    public OpenAPI api(){
        Info info = new Info().title("RESTful API 명세서").version("v3.2.1")
                .description("Spring Boot로 개발하는 RESTful API 명세서 입니다.");

        return new OpenAPI().components(new Components()).info(info);
    }

    /**
     * 경로 그룹화
     */
    @Bean
    public GroupedOpenApi customOpenAPI() {
        String[] paths = {"/api/user/**"};

        return GroupedOpenApi
                .builder()
                .group("읽기 허용된 API")
                .pathsToMatch(paths).build();
    }

}

 

User

@Data
@AllArgsConstructor
@Schema(description = "사용자 상세 정보를 위한 도메인 객체")
public class User {
    @Schema(title = "사용자 ID", description = "사용자 ID는 자동 생성됩니다.")
    private Long id;

    @Schema(title = "사용자 이름", description = "사용자 이름을 입력합니다.")
    private String name;

    @Schema(title = "사용자 나이", description = "사용자 나이를 입력합니다.")
    private Integer age;

}

 

UserController

@Tag(name = "user-controller", description = "일반 사용자 서비스를 위한 컨트롤러입니다.")
@RestController
@RequestMapping("/api/user")
public class UserController {

    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        return ResponseEntity.ok(user);
    }

    @Operation(summary = "사용자 정보 조회 API", description = "사용자 ID를 이용해서 사용자 상세 정보 조회를 합니다.")
    @ApiResponses({
            @ApiResponse(responseCode = "200", description = "OK!!"),
            @ApiResponse(responseCode = "400", description = "BAD REQUEST!!"),
            @ApiResponse(responseCode = "404", description = "USER NOT FOUND!!"),
            @ApiResponse(responseCode = "500", description = "INTERNAL SERVER ERROR!!"),
    })
    @GetMapping("/{id}")
    public ResponseEntity<User> findUser(
            @Parameter(description = "사용자 ID", required = true, example = "1") @PathVariable Long id) {
        return ResponseEntity.ok(new User(id, "김형민", 25));
    }
}

 

http://localhost:8080/swagger-ui/index.html

'개발' 카테고리의 다른 글

[Hateoas] Hateoas란?  (0) 2024.01.13
    '개발' 카테고리의 다른 글
    • [Hateoas] Hateoas란?
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바