>  기사  >  Java  >  Springboot에 Swagger2 프레임워크를 통합하는 방법

Springboot에 Swagger2 프레임워크를 통합하는 방법

WBOY
WBOY앞으로
2023-05-15 08:01:18631검색

요약: 프로젝트 개발에서는 프론트엔드와 백엔드를 분리해야 하는 경우가 많습니다. 즉, 백엔드 개발자는 인터페이스 제공자가 Java 또는 언어인지 여부에 관계없이 많은 수의 서비스 인터페이스를 출력해야 하는 경우가 많습니다. PHP는 A 인터페이스의 주소, 전달해야 하는 매개변수, 반환 값의 JSON 데이터 형식 및 각 필드에 대한 설명과 같은 인터페이스 문서를 작성하는 경우가 많습니다. 물론 HTTP 요청 헤더, 요청 콘텐츠 및 기타 정보도 고려해야 합니다. 프로젝트가 진행되고 빠르게 반복됨에 따라 백엔드에서 출력되는 인터페이스는 수정, 복구 및 기타 문제에 직면하는 경우가 많으며 이는 인터페이스 문서도 그에 따라 조정되어야 함을 의미합니다. 인터페이스 문서의 유지 관리성과 가독성이 크게 저하됩니다.

인터페이스 문서는 적절한 대면 커뮤니케이션을 유지하기 위한 노력이 필요하므로, 먼저 인터페이스 문서를 작성할 필요가 없습니다. 인터페이스 문제에 대한 통신이 백엔드에 호출될 수 있는 모든 서비스 인터페이스가 나열되어 있고 각 서비스 인터페이스에 매개변수 및 반환 값에 대한 설명이 나열되어 있는 URL을 제공할 수 있습니까? -end 인터페이스는 호출을 시뮬레이션할 수 있으며 모든 문제가 해결됩니다. 이 기사에서는 Swagger2 프레임워크를 Sringboot에 통합하는 데 중점을 둡니다.

1.1. Swagger2 종속성 추가

프로젝트의 pom.xml 파일에 다음 종속성을 추가합니다.

<dependency>
 <groupid>io.springfox</groupid>
 <artifactid>springfox-swagger2</artifactid>
 <version>2.7.0</version>
</dependency>
<dependency>
 <groupid>io.springfox</groupid>
 <artifactid>springfox-swagger-ui</artifactid>
 <version>2.7.0</version>
</dependency>

먼저 시작 클래스를 만들어야 합니다. 코드는 다음과 같습니다.

@SpringBootApplication
public class Application {
 public static void main(String[] args) {
 SpringApplication.run(Application.class, args);
 }
}

그런 다음 아래와 같이 위 클래스와 동일한 디렉터리에 새 swagger2 구성 클래스를 만듭니다.

@Configuration
@EnableSwagger2
public class Swagger2 {
  @Bean
  public Docket createRestApi() {
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        .select()
        .apis(RequestHandlerSelectors.basePackage("com.shareniu.web"))
        .paths(PathSelectors.any())
        .build();
  }
  private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
        .title("跟着分享牛学习Springboot源码分析系列课程")
        .description("更多Spring Boot相关文章请关注分享牛的博客")
        .termsOfServiceUrl("http://www.shareniu.com/")
        .contact("牛牛")
        .license("Copyright 2017-2018 分享牛")
        .version("1.0")
        .build();
  }
}

@Configuration은 spring을 다음과 같이 공식화했습니다. 이 클래스를 로드합니다. @ EnableSwagger2 주석은 Swagger 기능을 활성화하는 것입니다.

위의 ApiInfo는 결국 프런트 엔드에 표시됩니다. 우리는 Scanning 패키지 방법을 사용하여 RequestHandlerSelectors.basePackage라는 구성을 구성합니다. 이 패키지와 하위 패키지의 컨트롤러는 궁극적으로 API 문서를 생성합니다. (@ApiIgnore 주석으로 지정된 요청 제외)

1.2. 새 문서 설명 추가

위 클래스 선언 후에 실제로 직접 호출할 수 있지만 문서의 가독성을 높이기 위해 먼저 인터페이스에 몇 가지 설명을 추가해야 합니다. a 컨트롤 장치는 다음과 같습니다.

@RestController
@RequestMapping(value="/users")
public class UserController {
  static Map<long> users = Collections.synchronizedMap(new HashMap<long>());
  static {
   User user = new User();
   user.setAge(18);
   user.setId(1L);
   user.setName("aa");
   users.put(1L, user);
  }
  @ApiOperation(value="获取所有用户列表", notes="")
  @RequestMapping(value={""}, method=RequestMethod.GET)
  public List<user> getUserList() {
    List<user> r = new ArrayList<user>(users.values());
    return r;
  }
  @ApiOperation(value="创建新的用户", notes="根据User对象创建用户")
  @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
  @RequestMapping(value="", method=RequestMethod.POST)
  public String postUser(@RequestBody User user) {
    users.put(user.getId(), user);
    return "success";
  }
  @ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息")
  @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
  @RequestMapping(value="/{id}", method=RequestMethod.GET)
  public User getUser(@PathVariable Long id) {
    return users.get(id);
  }
  @ApiOperation(value="更新用户详细信息", notes="根据url的id来指定更新对象")
  @ApiImplicitParams({
      @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
      @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
  })
  @RequestMapping(value="/{id}", method=RequestMethod.PUT)
  public String putUser(@PathVariable Long id, @RequestBody User user) {
    User u = users.get(id);
    u.setName(user.getName());
    u.setAge(user.getAge());
    users.put(id, u);
    return "success";
  }
  @ApiOperation(value="删除已存在的用户", notes="根据url的id来指定删除对象")
  @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
  @RequestMapping(value="/{id}", method=RequestMethod.DELETE)
  public String deleteUser(@PathVariable Long id) {
    users.remove(id);
    return "success";
  }
}</user></user></user></long></long>

@ApiOperation: 인터페이스의 기능을 설명하는 데 사용됩니다. 이 주석을 사용하여 인터페이스의 책임, 헤더 정보 반환, 메서드 요청 메서드("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" 및 "PATCH")를 설명할 수 있습니다. 프로토콜(http, https, ws, wss), http 상태 코드.
@ApiImplicitParam: 매개변수에 설명을 추가하는 데 사용됩니다. 매개변수의 이름, 필수항목인지, 매개변수에 대한 설명, 읽기전용인지 등을 설정할 수 있습니다.

위 코드를 제출한 후 springboot를 시작하고 http://127.0.0.1:8080/swagger-ui.html

상단 부분은 Swagger2 클래스를 통해 구성되며, 아래 부분은 의 UserController 클래스 인터페이스 문서입니다.
여기에서는 /user를 예로 들어 보겠습니다.

아래 그림과 같이 /user를 클릭합니다.

Springboot에 Swagger2 프레임워크를 통합하는 방법

위 그림의 노란색 영역은 이 인터페이스에서 반환된 샘플 데이터를 나타냅니다. 이것이 User의 데이터 구조입니다. 응답 콘텐츠 유형: 인터페이스에서 반환된 헤더 정보입니다. 사용해 보세요를 클릭합니다. 아래와 같이:

Springboot에 Swagger2 프레임워크를 통합하는 방법

이 인터페이스에서 반환된 Baody, 코드 코드 및 응답 헤더가 성공적으로 반환되었습니다.

위 내용은 Springboot에 Swagger2 프레임워크를 통합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제