- 2024-01-09 14:32:47
- 4740 热度
- 0 评论
Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。
Swagger 的优势
支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。
提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。
Swagger使用的注解及其说明:
@Api:用在类上,说明该类的作用。 @ApiOperation:注解来给API增加方法说明。 @ApiImplicitParams : 用在方法上包含一组参数说明。 @ApiImplicitParam:用来注解来给方法入参增加说明。 参数: ·paramType:指定参数放在哪个地方 ··header:请求参数放置于Request Header,使用@RequestHeader获取 ··query:请求参数放置于请求地址,使用@RequestParam获取 ··path:(用于restful接口),请求参数的获取:@PathVariable ··body:(不常用) ··form(不常用) ·name:参数名 ·dataType:参数类型 ·required:参数是否必须传(true | false) ·value:说明参数的意思 ·defaultValue:参数的默认值 @ApiResponses:用于表示一组响应 @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息 ——code:数字,例如400 ——message:信息,例如"请求参数异常!" ——response:抛出异常的类 @ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候) @ApiModelProperty:描述一个model的属性
SpringBoot中Maven引入:
<!-- Swagger --> <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>
修改Controller增加注解:
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @Api(value = "用户管理类") @Controller public class SwController { @ApiOperation(value = "修改用户密码", notes = "根据用户id修改密码") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "userId", value = "用户ID", required = true, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "password", value = "旧密码", required = true, dataType = "String"), @ApiImplicitParam(paramType = "query", name = "newPassword", value = "新密码", required = true, dataType = "String") }) @PostMapping("/hellosw") @ResponseBody public String hello(Model model, @RequestParam("userId") String userId, @RequestParam("password") String password, @RequestParam("newPassword") String newPassword) { return userId + "-" + password + "-" + newPassword; } }
配置类,用于指定扫描那些接口
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; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class Swagger2Conf { @Bean public Docket getUserDocket() { ApiInfo apiInfo = new ApiInfoBuilder().title("用户管理")// api标题 .description("用户管理相关接口描述")// api描述 .version("1.0.0")// 版本号 .build(); return new Docket(DocumentationType.SWAGGER_2)// 文档类型(swagger2) .apiInfo(apiInfo)// 设置包含在json ResourceListing响应中的api元信息 .select()// 启动用于api选择的构建器 .apis(RequestHandlerSelectors.basePackage("com.example.demo.swagger"))// 扫描接口的包 .paths(PathSelectors.any())// 路径过滤器(扫描所有路径) .build(); } }
启动后访问:
http://localhost:8080/swagger-ui.html
我们甚至可以直接在线就行测试
END
0 评论
留下评论
热门标签
- Spring(403)
- Boot(208)
- Spring Boot(187)
- Java(82)
- Cloud(82)
- Spring Cloud(82)
- Security(60)
- Spring Security(54)
- Boot2(51)
- Spring Boot2(51)
- Redis(31)
- SQL(29)
- Mysql(25)
- IDE(24)
- Dalston(24)
- JDBC(22)
- IDEA(22)
- mongoDB(22)
- MVC(22)
- Web(21)
- CLI(20)
- Alibaba(19)
- SpringMVC(19)
- SpringBoot(17)
- Docker(17)
- Eclipse(16)
- Vue(16)
- Git(16)
- JPA(15)
- Apache(15)
- ORA(15)
- Oracle(14)
- jdk(14)
- Tomcat(14)
- Linux(14)
- HTTP(14)
- Mybatis(14)
- XML(13)
- JdbcTemplate(13)
- OAuth(13)
- Nacos(13)
- Pro(13)
- JSON(12)
- OAuth2(12)
- Data(12)
- stream(11)
- int(11)
- Myeclipse(11)
- not(10)
- Bug(10)
- maven(9)
- Map(9)
- Hystrix(9)
- ast(9)
- APP(8)
- Bit(8)
- API(8)
- session(8)
- Window(8)
- Swagger(8)
- JavaMail(7)
- Cache(7)
- File(7)
- IntelliJ(7)
- mail(7)
- windows(7)
- too(7)
- HTML(7)
- Github(7)
- Excel(6)
- Log4J(6)
- pushlet(6)
- apt(6)
- read(6)
- Freemarker(6)
- WebFlux(6)
- JSP(6)
- Bean(6)
- error(6)
- Server(6)
- nginx(6)
- ueditor(6)
- jar(6)
- ehcache(6)
- UDP(6)
- RabbitMQ(6)
- star(6)
- and(6)
- Struts(5)
- string(5)
- script(5)
- Syntaxhighlighter(5)
- Tool(5)
- Controller(5)
- swagger2(5)
- ldquo(5)
- input(5)
- Servlet(5)
- Config(5)
- discuz(5)