作者:小莫 链接:https://www.zhihu.com/question/28119576/answer/134580038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一、环境 1. JAVA8 2. MAVEN 3.0.5 3. IDEA 2016.2.5 4. spring boot 1.4.1 三、配置 四、相关注解解读 1. @Api 5. @ApiResponses 7. @ApiModel
io.springfox springfox-swagger-ui 2.2.2 io.springfox springfox-swagger2 2.2.2
设置了一些默认显示的api相关信息,最后上截图的时就可以比较清楚的看到。
@Configuration@EnableSwagger2public class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("info.xiaomo.website")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring Boot中使用Swagger2构建RESTful APIs") .description("api根地址:http://api.xiaomo.info:8080/") .termsOfServiceUrl("https://xiaomo.info/") .contact("小莫") .version("1.0") .build(); }}
用在类上,说明该类的作用
@Api(value = "UserController", description = "用户相关api") 2. @ApiOperation用在方法上,说明方法的作用
@ApiOperation(value = "查找用户", notes = "查找用户", httpMethod = "GET", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) 3 @ApiImplicitParams用在方法上包含一组参数说明
4. @ApiImplicitParam用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
paramType:参数放在哪个地方header–>请求参数的获取:@RequestHeaderquery–>请求参数的获取:@RequestParampath(用于restful接口)–>请求参数的获取:@PathVariablebody(不常用)form(不常用)name:参数名dataType:参数类型required:参数是否必须传value:参数的意思defaultValue:参数的默认值@ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),})
用于表示一组响应
6. @ApiResponse用在@ApiResponses中,一般用于表达一个错误的响应信息
code:数字,例如400message:信息,例如”请求参数没填好”response:抛出异常的类@ApiResponses(value = { @ApiResponse(code = 400, message = "No Name Provided") })
描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModel(value = "用户实体类") 8. @ApiModelProperty描述一个model的属性
@ApiModelProperty(value = "登录用户") 五、 和Swagger UI的集成首先,从github 上下载Swagger-UI, 把该项目dist目录下的内容拷贝到项目的resources的目录public下。
六、访问就可以看到效果如下