Maison >Java >javaDidacticiel >Comment Springboot intègre swagger3 et knife4j
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
Remarque : la version actuelle de SpringBoot est la 2.5.6 et Swagger3.0 n'est actuellement pas entièrement compatible avec SpringBoot2.6.x !
@RestController @RequestMapping("test") public class TestController { @GetMapping public Map<String, Object> get(@RequestParam String id) { Map<String, Object> r = new HashMap<>(1); r.put("id", id); return r; } @PostMapping public Map<String, Object> post() { Map<String, Object> r = new HashMap<>(1); r.put("code", 200); return r; } @PutMapping public Map<String, Object> put(String id) { Map<String, Object> r = new HashMap<>(1); r.put("id", id); return r; } @DeleteMapping public Map<String, Object> delete(String id) { Map<String, Object> r = new HashMap<>(1); r.put("id", id); return r; } }
@Configuration @EnableOpenApi public class SwaggerConfig { private static final String VERSION = "0.0.1"; @Bean public Docket createRestApi() { return new Docket(DocumentationType.OAS_30) .groupName("分组名称") .apiInfo(apiInfo()) .select() //要扫描的包 .apis(RequestHandlerSelectors.basePackage("com.example.swagger.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() // 设置标题 .title("文档标题") //联系人 .contact(contact()) //描述 .description("xxx文档") //服务 .termsOfServiceUrl("https://spring.io/") //许可证 .license("Apache 2.0") .licenseUrl("https://www.apache.org/licenses/LICENSE-2.0") .version(VERSION) .build(); } private Contact contact (){ return new Contact("SpringBoot", "https://spring.io/", "email"); } }
Annotation | Fonction | Utiliser l'emplacement |
---|---|---|
@Api | dit oui Classe Description Paramètres communs | Class |
@ApiOperation | Décrivez le but de la méthode | Method |
@ApiImplicitParams | Il peut contenir plusieurs @ApiImplicitParam | method |
@ApiImplicitParam | Description Le but des paramètres | méthode |
@ApiModel | représente les informations d'une classe de données | class |
@ApiModelProperty | décrit les attributs de la classe de données | attributs |
@Api Ignorer | Ignorer quelqu'un Champ pour qu'il ne soit pas affiché dans le document | Attributs |
1 Créer une nouvelle classe d'entité utilisateur
@ApiModel("用户") @Data public class User { @ApiModelProperty("用户名") private String username; @ApiModelProperty("密码") private String password; }
2 Ajouter des annotations à TestController
@Api(tags = "测试接口") @RestController @RequestMapping("test") public class TestController { @ApiOperation("get请求") @GetMapping @ApiImplicitParam(name = "id", value = "测试用id", dataTypeClass = String.class) public Map<String, Object> get(@RequestParam String id) { Map<String, Object> r = new HashMap<>(1); r.put("id", id); return r; } @ApiOperation("post请求") @PostMapping public Map<String, Object> post(@RequestBody User user) { Map<String, Object> r = new HashMap<>(1); r.put("code", 200); return r; } @ApiOperation("put请求") @PutMapping @ApiImplicitParam(name = "id", value = "put请求id", dataTypeClass = String.class) public Map<String, Object> put(String id) { Map<String, Object> r = new HashMap<>(1); r.put("id", id); return r; } @ApiOperation("delete请求") @DeleteMapping @ApiImplicitParam(name = "id", value = "delete请求id", dataTypeClass = String.class) public Map<String, Object> delete(String id) { Map<String, Object> r = new HashMap<>(1); r.put("id", id); return r; } }
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-micro-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
Ajoutez **@EnableKnife4j** sur la classe SwaggerConfig
@Configuration @EnableOpenApi @EnableKnife4j public class SwaggerConfig
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!