1.使用idea创建springboot项目
2.导入swagger2的相关依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency>
3.配置swagger2的配置类
package cn.huangwei.configure; 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; /** * @Description TODO * @Author huangwei * @Date 2019/8/23 17:04 */ @Configuration @EnableSwagger2 public class Swagger2Configure { @Bean public Docket createRestApi() { /* 通过createRestApi创建docket apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。 select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现, 扫描cn.huangwei.controller包下面定义的方法作为展示的RestFul api,产生文档内容 */ return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() .apis(RequestHandlerSelectors.basePackage("cn.huangwei.controller")) .paths(PathSelectors.any()).build(); } /* 定义展示的信息,例如标题、描述、版本等 */ private ApiInfo apiInfo() { return new ApiInfoBuilder().title("度量服务api文档").description("度量服务api文档") .termsOfServiceUrl("http://127.0.0.1:80808/api").version("1.0").build(); } } |
@Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" value="该参数没什么意义,在UI界面上也看到,所以不需要配置"
@ApiOperation:用在请求的方法上,说明方法的用途、作用 value="说明方法的用途、作用" notes="方法的备注说明"
@ApiImplicitParams:用在请求的方法上,表示一组参数说明 @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面 name:参数名 value:参数的汉字说明、解释 required:参数是否必须传 paramType:参数放在哪个地方 · header --> 请求参数的获取:@RequestHeader · query --> 请求参数的获取:@RequestParam · path(用于restful接口)--> 请求参数的获取:@PathVariable · body(不常用) · form(不常用) dataType:参数类型,默认String,其它值dataType="Integer" defaultValue:参数的默认值
@ApiResponses:用在请求的方法上,表示一组响应 @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息 code:数字,例如400 message:信息,例如"请求参数没填好" response:抛出异常的类
@ApiModel:用于响应类上,表示一个返回响应数据的信息 (这种一般用在post创建的时候,使用@RequestBody这样的场景, 请求参数无法使用@ApiImplicitParam注解进行描述的时候) @ApiModelProperty:用在属性上,描述响应类的属性 |
package cn.huangwei.controller; import cn.huangwei.bean.UserBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; /** * @Description TODO * @Author huangwei * @Date 2019/8/23 17:12 */ @Controller @Api(tags = "用户管理") public class UserController { @RequestMapping(value = "/user", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "获取用户列表") @ApiImplicitParam(name = "id", value = "用户id", required = true, dataType = "String") public UserBean getUser(@RequestParam String id){ UserBean ub = new UserBean(); ub.setId("111"); ub.setName("hw"); ub.setAge(12); return ub; } } |