/**
* 環(huán)境
* Windows 7
* SpringBoot 2.0.2
* Swagger 2.8.0
* Eclipse Photo
*/
什么是swagger?
Swagger的目標(biāo)是為REST APIs 定義一個(gè)標(biāo)準(zhǔn)的猩系,與語(yǔ)言無(wú)關(guān)的接口票腰,使人和計(jì)算機(jī)在看不到源碼或者看不到文檔或者不能通過(guò)網(wǎng)絡(luò)流量檢測(cè)的情況下能發(fā)現(xiàn)和理解各種服務(wù)的功能。當(dāng)服務(wù)通過(guò)Swagger定義押搪,消費(fèi)者就能與遠(yuǎn)程的服務(wù)互動(dòng)通過(guò)少量的實(shí)現(xiàn)邏輯窖梁。類似于低級(jí)編程接口瞪慧,Swagger去掉了調(diào)用服務(wù)時(shí)的很多猜測(cè)。 瀏覽 Swagger-Spec 去了解更多關(guān)于Swagger 項(xiàng)目的信息茅主,包括附加的支持其他語(yǔ)言的庫(kù)舞痰。
準(zhǔn)備pom文件
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.dxf</groupId>
<artifactId>myspringboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>myspringboot-swagger</artifactId>
<name>myspringboot-swagger</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
配置文件yml
server:
port: 80
首先配置Swagger(Swagger2Configjava)
package com.dxf.myspringboot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket getDocket() { // 此類主要是整個(gè)的Swagger配置項(xiàng),利用這個(gè)類需要來(lái)指派掃描包
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(this.getApiInfo()).select()
.apis(RequestHandlerSelectors
.basePackage("com.dxf.myspringboot.controller"))
.paths(PathSelectors.any()).build(); // 設(shè)置文檔的顯示類型
}
private ApiInfo getApiInfo() {
return new ApiInfoBuilder().title("SpringBoot中使用Swagger構(gòu)建項(xiàng)目說(shuō)明信息")
.description("更多選擇請(qǐng)關(guān)注www.wukonglai.com")
.termsOfServiceUrl("http://www.wukonglai.com").contact("悟空來(lái)-小白龍")
.license("獨(dú)善其身的狗").version("1.0").build();
}
}
model類編寫(User.java)
package com.dxf.myspringboot.model;
import java.util.Date;
public class User {
private int uid;
private String name;
private Date birthday;
private double salary;
private int age;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [uid=" + uid + ", name=" + name + ", birthday=" + birthday + ", salary=" + salary + ", age=" + age
+ "]";
}
}
Controller類編寫(UserController.java)
package com.dxf.myspringboot.controller;
import java.util.Date;
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.dxf.myspringboot.model.User;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@RestController
public class UserController {
@ApiOperation(value = "實(shí)現(xiàn)人員信息的添加處理", notes = "就是加人的诀姚,多么的簡(jiǎn)單")
@ApiImplicitParams({
@ApiImplicitParam(name = "user", value = "用戶描述的詳細(xì)實(shí)體信息", required = true, dataType = "User")})
@RequestMapping(value = "/user/add", method = RequestMethod.POST)
public Object add(@RequestBody User user) { // 表示當(dāng)前的配置可以直接將參數(shù)變?yōu)閂O對(duì)象
System.err.println("【UserController.add()接收對(duì)象】" + user);
return true;
}
@ApiOperation(value = "獲取指定編號(hào)的人員信息", notes = "只需要設(shè)置uid的信息就可以獲取User的完整內(nèi)容")
@ApiImplicitParams({
@ApiImplicitParam(name = "uid", value = "用戶編號(hào)", required = true, dataType = "String")})
@RequestMapping(value = "/user/get/{uid}", method = RequestMethod.GET)
public User get(@PathVariable("uid") int uid) {
User user = new User();
user.setUid(uid);
user.setAge(12);
user.setBirthday(new Date());
user.setSalary(2000.00);
user.setName("Tom");
System.err.println("【UserController.get()接收對(duì)象】" + user);
return user;
}
}
SpringBoot啟動(dòng)類(StartSpringBootMain.java)
package com.dxf.myspringboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@EnableCaching
@SpringBootApplication // 啟動(dòng)SpringBoot程序仓洼,而后自帶子包掃描
public class StartSpringBootMain {
public static void main(String[] args) throws Exception {
SpringApplication.run(StartSpringBootMain.class, args);
}
}
測(cè)試
正常進(jìn)行程序的啟動(dòng)配置處理伦吠,而后打開瀏覽器進(jìn)入到界面:http://localhost/swagger-ui.html丰介;
接下來(lái)我們?cè)谄渲羞M(jìn)行一些操作
【user-controller】-->【/user/add】
【try is out】
之后看下后臺(tái)信息是否輸出