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的详细内容。
