SpringBoot整合Swagger

/**
 * 環(huán)境 
 * Windows 7 
 * SpringBoot 2.0.2 
 * Swagger 2.8.0 
 * Eclipse Photo
*/
image

什么是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丰介;

image

接下來(lái)我們?cè)谄渲羞M(jìn)行一些操作
【user-controller】-->【/user/add】
image

【try is out】
image

image

之后看下后臺(tái)信息是否輸出
image

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末榜贴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子糯笙,更是在濱河造成了極大的恐慌贬丛,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炬丸,死亡現(xiàn)場(chǎng)離奇詭異瘫寝,居然都是意外死亡蜒蕾,警方通過(guò)查閱死者的電腦和手機(jī)稠炬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)咪啡,“玉大人首启,你說(shuō)我怎么就攤上這事〕访” “怎么了毅桃?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)准夷。 經(jīng)常有香客問(wèn)我钥飞,道長(zhǎng),這世上最難降的妖魔是什么衫嵌? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任读宙,我火速辦了婚禮,結(jié)果婚禮上楔绞,老公的妹妹穿的比我還像新娘结闸。我一直安慰自己,他們只是感情好酒朵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布桦锄。 她就那樣靜靜地躺著,像睡著了一般蔫耽。 火紅的嫁衣襯著肌膚如雪结耀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音图甜,去河邊找鬼香伴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛具则,可吹牛的內(nèi)容都是我干的即纲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼博肋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼低斋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起匪凡,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤膊畴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后病游,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唇跨,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年衬衬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了买猖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡滋尉,死狀恐怖玉控,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狮惜,我是刑警寧澤高诺,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站碾篡,受9級(jí)特大地震影響虱而,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜开泽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一牡拇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧眼姐,春花似錦诅迷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至贡歧,卻和暖如春滩租,著一層夾襖步出監(jiān)牢的瞬間赋秀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工律想, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猎莲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓技即,卻偏偏與公主長(zhǎng)得像著洼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子而叼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容