1,什么是 swagger?
口头说就是通过这个,可以测试你后端开发的api,什么接口描述,请求参数都不用自己封装。同时也方便前端人员查看api,一举多得。
2,怎么配置?
现在swagge都是微服务架构,我简单在springboot中配置一下,这里我的环境是:
idea,jdk8,gradle。
①在gradle中引入相关jar配置
compile("io.springfox:springfox-swagger-ui:${swagger2Version}") compile("io.springfox:springfox-swagger2:${swagger2Version}")
②在项目相关位置新建swagger配置
新建class: Swagger2.java 同时继承 WebmvcConfigurerAdapter。这里不做坠述。直接上代码。
@Configuration @EnableSwagger2 public class Swagger2 extends WebMvcConfigurerAdapter {
[@Override](https://my.oschina.net/u/1162528)
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars*")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
[@Bean](https://my.oschina.net/bean)
public Docket createRestApi() {
ParameterBuilder tokenPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<Parameter>();
//header添加token验证
tokenPar.name("Authorization").description("Authorization").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(tokenPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.paths(PathSelectors.any())
.build()
.globalOperationParameters(pars);
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xx管理平台")
.version("1.0")
.build();
}
}
说一下,token验证。现在服务端提供api接口,同时普遍支持单点登录。只有登录用户,获得到相应的token值。在请求header中携带此token,才能正确访问接口。这样保证的一定的系统安全性。这里只是展示真么配置swagger请求header自定义参数。key为Authorization,类型为String字符串。
还有一点:这里我是通过扫描Api注解的的Controller接口,也可以通过自己需求自己定义需要扫描的地址接口。
③编写Controller
@RestController @RequestMapping("/v1/user") @Api(value = "/v1/user", description = "用户") public class UserController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired
private UserService userService;
@Autowired
private OftenUserService oftenUserService;
@Autowired
private RedisUtil redisUtil;
@PostMapping("/add")
@ApiOperation(value = "添加用户", notes = "添加", httpMethod = "POST")
public ResultVo<String> add(@RequestBody UserAddVo userAddVo, HttpServletRequest request){
logger.info("add: " + JSON.toJSONString(userAddVo));
ResultVo<String> resultVo = new ResultVo<>();
Long useId = RequestUtil.getUserId(request);
return userService.add(userAddVo,useId);
} }
完成后启动项目,访问swagger-ui.html
一目了然,现在可以通过swagger进行api测试了。但是这个ui默认不是很好看。我们也可以导入第三方ui库修改。推荐swagger-bootstrap-ui。
给个网址:https://www.oschina.net/news/88444/swagger-bootstrap-ui-1-6