Swagger는 Swagger를 통해 프로젝트의 대화형 문서, 클라이언트 SDK 자동 생성 및 기타 기능을 얻을 수 있는 일련의 RESTful API 도구입니다.
Swagger의 목표는 사람과 컴퓨터가 소스 코드나 문서를 보거나 다양한 서비스의 네트워크 트래픽 감지에 실패하지 않고도 이를 발견하고 이해할 수 있도록 REST API에 대한 언어 독립적인 표준 인터페이스를 정의하는 것입니다. Swagger를 통해 서비스가 정의되면 소비자는 소량의 구현 로직을 통해 원격 서비스와 상호 작용할 수 있습니다.
Spring Boot를 사용하여 Swagger를 통합하는 아이디어는 주석을 사용하여 API 문서에 표시되어야 하는 정보를 표시하는 것입니다. 표시된 주석을 기반으로 해당 API 문서를 생성합니다. 프로젝트에서. Swagger는 세계에서 가장 널리 사용되는 API 도구로 알려져 있으며 API 관리를 위한 완벽한 솔루션을 제공합니다. 여기서는 가장 일반적으로 사용되는 사용자 정의 콘텐츠에 대해 기본적으로 설명합니다.
Swagger 3를 통합하는 Spring Boot는 매우 간단합니다. 종속성을 도입하고 기본 구성만 수행하면 됩니다.
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
Swagger API 문서 기능을 활성화하려면 @EnableOpenApi 주석을 추가하세요
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import springfox.documentation.oas.annotations.EnableOpenApi; @SpringBootApplication @EnableOpenApi //启动swagger api文档注解 public class SpringBootWithSwaggerApplication { public static void main(String[] args) { SpringApplication.run(SpringBootWithSwaggerApplication.class, args); } }
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; /** * @author 阿水 * @create 2023-04-11 9:54 */ @RestController() public class SwaggerController { @GetMapping ("hello") public String hello(String params) { return "hello swagger"+" param为:"+params; } }
Swagger는 주석을 사용하여 인터페이스가 인터페이스 이름, 요청 방법, 매개변수, 반환 정보 등을 포함하는 문서를 생성함을 나타냅니다.
1,ApiOperation
주석은 클래스에 사용되며 @API에는 값과 태그라는 두 가지 속성이 있음을 나타냅니다.
생성된 API 문서는 태그에 따라 분류됩니다. 직설적으로 말하면 이 컨트롤러의 모든 인터페이스에서 생성된 인터페이스 문서는 태그 목록 아래에 있습니다. 태그에 여러 값이 있으면 여러 목록이 생성되고 각 목록이 표시됩니다. 모든 인터페이스http://localhost:8080/swagger-ui/index.html
@ApiOperation
은 http 요청의 작업을 나타내는 메서드에 사용됩니다.
语法: @Api(tags = "用户操作") 或 @Api(tags = {"用户操作","用户操作2"})
语法: @ApiOperation(value = "", notes = "", response = ) 属性说明: value:方法说明标题 notes:方法详细描述 response:方法返回值类型
Apiimplicitparams
주석 및apiimplicitparam
import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; /** * @author 阿水 * @create 2023-04-11 9:54 */ @RestController() @Api(tags = {"操作用户"}) public class SwaggerController { @GetMapping ("hello") @ApiOperation(value = "swagger请求",notes = "阿水的第一个swagger请求",response = String.class) public String hello(String params) { return "hello swagger"+" param为:"+params; } }
语法: @ApiImplicitParams(value = { @ApiImplicitParam(name="", value = "", type = "", required = true, paramType = "", defaultValue = "") }) 属性说明: name:形参名称 value:形参的说明文字 type:形参类型 required:该参数是否必须 true|false paramType: 用于描述参数是以何种方式传递到 Controller 的,它的值常见有: path, query, body 和 header path 表示参数是『嵌在』路径中的,它和 @PathVariable 参数注解遥相呼应; query 表示参数是以 query string 的形式传递到后台的(无论是 get 请求携带在 url 中,还是 post 请求携带在请求体中),它和 @RequestParam 参数注解遥相呼应; header 表示参数是『藏在』请求头中传递到后台的,它和 @RequestHeader 参数注解遥相呼应的。 form 不常用. defaultValue :参数默认值
3. ApiModel 주석과 ApiModelProperty
@ApiModel은 엔터티의 매개변수 수신 설명을 나타내기 위해 엔터티 클래스에 사용됩니다. 수업.import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; /** * @author 阿水 * @create 2023-04-11 9:54 */ @RestController() @Api(tags = {"操作用户"}) public class SwaggerController { @GetMapping ("hello") @ApiOperation(value = "swagger请求",notes = "阿水的第一个swagger请求",response = String.class) @ApiImplicitParams(value ={ @ApiImplicitParam(name="param1", value = "参数名1", type = "String", required = true, paramType = "query", defaultValue = "阿水所想的默认值1" ), @ApiImplicitParam(name="param2", value = "参数名2", type = "String", required = true, paramType = "query", defaultValue = "阿水所想的默认值2" ) }) public String hello(String param1,String param2) { return "hello swagger"+" param1为:"+param1+"param2为"+param2; } }
@ApiModel("用户类") @Data public class Users { @ApiModelProperty(value = "编码:主键") private Integer id; @ApiModelProperty(value = "用户名") private String username; @ApiModelProperty(value = "密码") private String password; }
/** * 添加用户 * * @param user * @return */ @PostMapping("/add") @ApiOperation(value = "添加用户",notes = "添加用户信息",response = ResponseResult.class) @ApiResponses({ @ApiResponse(code = 200, message = "添加成功", response = ResponseResult.class), @ApiResponse(code = 500, message = "添加失败", response = ResponseResult.class) }) public ResponseResult<Void> addUser(@RequestBody User user) { //获得生成的加密盐 user.setSalt(SaltUtils.getSalt()); int n = userService.addUser(user); if (n > 0) { return new ResponseResult<Void>(200, "添加成功"); } return new ResponseResult<Void>(500, "添加失败"); }
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; /** * Swagger配置类 */ @Configuration //项目启动时加载此类 public class SwaggerConfig { @Bean public Docket api(){ return new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .select() // 此处自行修改为自己的 Controller 包路径。 .apis(RequestHandlerSelectors.basePackage("com.lps.controller")) .paths(PathSelectors.any()) .build(); } public ApiInfo apiInfo(){ return new ApiInfoBuilder() .title("阿水的项目接口文挡") .description("阿水的 Project Swagger2 UserService Interface") //说明信息 .termsOfServiceUrl("http://localhost:8080/swagger-ui/index.html") //文档生成的主页地址 .version("1.0") //文档版本 .build(); } }
http.authorizeRequests().antMatchers( "/swagger-ui.html", "/swagger-ui/*", "/swagger-resources/**", "/v2/api-docs", "/v3/api-docs", "/webjars/**").permitAll() .anyRequest().authenticated();
위 내용은 SpringBoot 통합 인터페이스 관리 도구 Swagger 사용 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!