Tutorial básico do springboot2.x: explicação detalhada do Swagger para adicionar documentação à sua interface

Acredito que tanto o desenvolvimento front-end quanto o back-end foram mais ou menos torturados por documentos de interface. O front end frequentemente reclama que os documentos de interface fornecidos pelo back end são inconsistentes com a situação real. O back-end sente que escrever e manter documentos de interface consumirá muita energia e, geralmente, é tarde demais para atualizar. Na verdade, quer o front end chame o back end ou o back end chame o back end, espera-se um bom documento de interface.
O Swagger integrado do SpringBoot pode descrever claramente a interface por meio de anotações muito simples e gerar uma página de documento visual.
A interface nativa do Swagger-ui é muito difícil, então use o knife4j-spring-ui .

Uma boa descrição de documento de interface HTTP

  1. Escreva claramente o caminho da solicitação da interface: QueryPath: / user / login
  2. Escreva claramente o tipo de método de solicitação da interface: GET / POST / DELETE / PUT
  3. Escreva claramente o significado comercial da interface e dos cenários de uso
  4. Escreva claramente os parâmetros de entrada da interface: descrição do parâmetro, tipo de parâmetro, estrutura de parâmetro, se o parâmetro deve ser passado
  5. Escreva claramente o tipo de retorno da interface: estrutura de dados retornada, condições anormais

SpringBoot integra Swagger

Dependência de introdução do projeto

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-ui</artifactId>
            <version>2.0.4</version>
        </dependency>

SpringBoot sobre a configuração do Swagger

Basta colar esta configuração Swagger no projeto

@EnableSwagger2
@Configuration
public class SwaggerConfig implements WebMvcConfigurer {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
				//这里改成自己的接口包名
                .apis(RequestHandlerSelectors.basePackage("vip.codehome.springboot.tutorials.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("SpringBoot教程接口文档")//标题
                .description("使用swagger文档管理接口")//描述
                .contact(new Contact("codehome", "", "[email protected]"))//作者信息
                .version("1.0.0")//版本号
                .build();
    }
	//解决doc.html,swagger-ui.html 404问题
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations(
                "classpath:/static/");
        registry.addResourceHandler("swagger-ui.html").addResourceLocations(
                "classpath:/META-INF/resources/");
        registry.addResourceHandler("doc.html").addResourceLocations(
                "classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations(
                "classpath:/META-INF/resources/webjars/");

    }
}

Uso específico de Swagger

A função de cada anotação

  1. @Api apresenta o papel da classe na classe
  2. @ApiOperation coloca no método para apresentar a função do método
  3. @ApiImplicitParam Introdução
  4. @ApiResponse apresenta o status de retorno
  5. @ApiModel, @ApiModelProperty Introdução O parâmetro de entrada é um objeto e o retorno é uma descrição de campo de objeto

Exemplo de código

@RestController
@Api(tags = "Swagger注解测试类")
public class SwaggerUserController {
    @ApiOperation(value = "这是一个echo接口")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "msg",value = "请求的msg参数",required = true,paramType = "query"),
            @ApiImplicitParam(name = "token",value = "请求的token",required = false,paramType ="header" )
    })
    @ApiResponses({
            @ApiResponse(code=200,message = "请求成功"),
            @ApiResponse(code=400,message="请求无权限")
    })
    @GetMapping("/echo")
    public String echo(String msg,@RequestHeader(name = "token") String token){
        return msg;
    }
    @PostMapping("/login")
    public R<UserInfoVO> login(@RequestBody LoginDTO loginDTO){
        UserInfoVO userInfoVO=new UserInfoVO();
        userInfoVO.setNickname("编程之家");
        userInfoVO.setToken("xxx");
        return R.ok(userInfoVO);
    }
}
@Data
@ApiModel
public class LoginDTO {
    @ApiModelProperty(value = "用户账号或者邮箱")
    String account;
    @ApiModelProperty(value = "用户密码")
    String passwd;
    @ApiModelProperty(value = "用户密码")
    String verifyCode;
}

Efeito de documento de interface

A visita aqui é http: // localhost: 8080 / doc.html, knife4j-spring-ui também tem funções mais poderosas do que as originais.
Mil milhas começam com um único passo. Aqui está o segundo artigo da série de tutoriais SpringBoot. Todos os códigos-fonte do projeto podem ser baixados em meu GitHub .

Acho que você gosta

Origin blog.csdn.net/github_35592621/article/details/108248717
Recomendado
Clasificación