1、新建springboot項目,可以通過https://start.spring.io/快速生成springboot項目。
2、引入jar依賴:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
3、編寫Controller,並配置相應的注解,見下圖
package com.demo.incubator.swaggerdemo.controller; import java.util.Map; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @RestController @RequestMapping("/demo") @Api(protocols = "http,https", produces = "application/json", tags = "mock樣例") public class SwaggerDemoController { @PostMapping("/mokeInvoke") @ApiOperation(value = "mock方法樣例", notes = "返回一個字符串") public String mockInvoke(@ApiParam(value = "顯示的信息", required = true) @RequestParam("showMsg") String showMsg) { return showMsg; } @PostMapping("/mokeInvoke2") @ApiOperation(value = "mock方法樣例2", notes = "返回一個字符串") @ApiImplicitParams({@ApiImplicitParam(value = "手機號", name = "userPhone", required = true, paramType = "query"), @ApiImplicitParam(value = "姓名", name = "userName", required = true, paramType = "query"), @ApiImplicitParam(value = "地址", name = "address", required = true, paramType = "query"), @ApiImplicitParam(value = "系統來源", name = "appid", required = true, paramType = "header")}) public String mockInvoke2(@RequestBody Map<String, Object> params) { return JSON.toJSONString(params); } }
4、啟動項目,訪問鏈接地址http://localhost:8080/swagger-ui/index.html(端口換成自己配置的端口),即可看到swagger頁面,如下圖
5、但是會發現多出來basic-error-controller、operation-handler、web-mvc-links-handler,可以通過新建一個Configration來消除,只保留我們對外提供的接口
package com.demo.incubator.swaggerdemo.config; import java.util.stream.Collectors; import java.util.stream.Stream; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.PathSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @Configuration public class SwaggerConfiguration {
//注意標黃的地方要求能匹配到你所有的接口路徑,比如我的例子中兩個接口都是以demo開始的,/demo/mockInvoke和/demo/mockInvoke2 @Bean Docket xiaokeai() { return new Docket(DocumentationType.OAS_30).useDefaultResponseMessages(false) .produces(Stream.of("application/xml", "application/json").collect(Collectors.toSet())).select() .paths(PathSelectors.regex("/demo/.*")).build() .protocols(Stream.of("http", "https").collect(Collectors.toSet())); } }
6、再次啟動項目,就會發現只保留了自有的controller暴露的接口。