您好,欢迎访问一九零五行业门户网

Spring MVC中使用 Swagger2 构建Restful API

spring mvc配置文件中的配置
<!-- 设置使用注解的类所在的jar包,只加载controller类 --> <context:component-scan base-package="com.jay.plat.config.controller" />
<!-- 使用 swagger restful api文档时,添加此注解 --> <mvc:default-servlet-handler />
<mvc:resources mapping="swagger-ui.html" location="classpath:/meta-inf/resources/"/> <mvc:resources mapping="/webjars/**" location="classpath:/meta-inf/resources/webjars/"/>
maven依赖
<!-- 构建restful api --> <dependency> <groupid>io.springfox</groupid> <artifactid>springfox-swagger2</artifactid> <version>2.4.0</version> </dependency> <dependency> <groupid>io.springfox</groupid> <artifactid>springfox-swagger-ui</artifactid> <version>2.4.0</version> </dependency>
swagger配置文件
package com.jay.plat.config.util; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.componentscan; import org.springframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation.enablewebmvc; import org.springframework.web.servlet.config.annotation.webmvcconfigurationsupport; 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; /* * restful api 访问路径: * http://ip:port/{context-path}/swagger-ui.html * eg:http://localhost:8080/jd-config-web/swagger-ui.html */ @enablewebmvc @enableswagger2 @componentscan(basepackages = {"com.plat.config.controller"}) @configuration public class restapiconfig extends webmvcconfigurationsupport{ @bean public docket createrestapi() { return new docket(documentationtype.swagger_2) .apiinfo(apiinfo()) .select() .apis(requesthandlerselectors.basepackage("com.jay.plat.config.controller")) .paths(pathselectors.any()) .build(); } private apiinfo apiinfo() { return new apiinfobuilder() .title("spring 中使用swagger2构建restful apis") .termsofserviceurl("http://blog.csdn.net/he90227") .contact("逍遥飞鹤") .version("1.1") .build(); } }
配置说明:
@configuration 配置注解,自动在本类上下文加载一些环境变量信息 @enablewebmvc @enableswagger2 使swagger2生效 @componentscan("com.myapp.packages") 需要扫描的包路径
controller中使用注解添加api文档
package com.jay.spring.boot.demo10.swagger2.controller; import java.util.arraylist; import java.util.collections; import java.util.hashmap; import java.util.list; import java.util.map; import org.springframework.web.bind.annotation.pathvariable; import org.springframework.web.bind.annotation.requestbody; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestmethod; import org.springframework.web.bind.annotation.restcontroller; import com.jay.spring.boot.demo10.swagger2.bean.user; import io.swagger.annotations.apiimplicitparam; import io.swagger.annotations.apiimplicitparams; import io.swagger.annotations.apioperation; @restcontroller @requestmapping(value = "/users") // 通过这里配置使下面的映射都在/users下,可去除 public class usercontroller { static map<long, user> users = collections.synchronizedmap(new hashmap<long, user>()); @apioperation(value = "获取用户列表", notes = "") @requestmapping(value = { "" }, method = requestmethod.get) public list<user> getuserlist() { list<user> r = new arraylist<user>(users.values()); return r; } @apioperation(value = "创建用户", notes = "根据user对象创建用户") @apiimplicitparam(name = "user", value = "用户详细实体user", required = true, datatype = "user") @requestmapping(value = "", method = requestmethod.post) public string postuser(@requestbody user user) { users.put(user.getid(), user); return "success"; } @apioperation(value = "获取用户详细信息", notes = "根据url的id来获取用户详细信息") @apiimplicitparam(name = "id", value = "用户id", required = true, datatype = "long") @requestmapping(value = "/{id}", method = requestmethod.get) public user getuser(@pathvariable long id) { return users.get(id); } @apioperation(value = "更新用户详细信息", notes = "根据url的id来指定更新对象,并根据传过来的user信息来更新用户详细信息") @apiimplicitparams({ @apiimplicitparam(name = "id", value = "用户id", required = true, datatype = "long"), @apiimplicitparam(name = "user", value = "用户详细实体user", required = true, datatype = "user") }) @requestmapping(value = "/{id}", method = requestmethod.put) public string putuser(@pathvariable long id, @requestbody user user) { user u = users.get(id); u.setname(user.getname()); u.setage(user.getage()); users.put(id, u); return "success"; } @apioperation(value = "删除用户", notes = "根据url的id来指定删除对象") @apiimplicitparam(name = "id", value = "用户id", required = true, datatype = "long") @requestmapping(value = "/{id}", method = requestmethod.delete) public string deleteuser(@pathvariable long id) { users.remove(id); return "success"; } }
效果展示
访问路径:
restful api 访问路径: * http://ip:port/{context-path}/swagger-ui.html * eg:http://localhost:8080/jd-config-web/swagger-ui.html
以上就是spring mvc中使用 swagger2 构建restful api的详细内容。
其它类似信息

推荐信息