java版spring cloud+spring boot+redis社交電子商務(wù)平臺(十一)springboot集成swagger2,構(gòu)建優(yōu)雅的Restful API

spring cloud b2b2c電子商務(wù)社交平臺源碼請加企鵝求求:叁五叁六貳四柒貳五九棒搜。swagger,中文“拽”的意思疹蛉。它是一個功能強(qiáng)大的api框架,它的集成非常簡單力麸,不僅提供了在線文檔的查閱可款,而且還提供了在線文檔的測試。另外swagger很容易構(gòu)建restful風(fēng)格的api克蚂,簡單優(yōu)雅帥氣闺鲸,正如它的名字。

一埃叭、引入依賴

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>

二摸恍、寫配置類

@Configuration
@EnableSwagger2
public class Swagger2 {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.forezp.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("springboot利用swagger構(gòu)建api文檔")
                .description("簡單優(yōu)雅的restfun風(fēng)格,http://blog.csdn.net/forezp")
                .termsOfServiceUrl("http://blog.csdn.net/forezp")
                .version("1.0")
                .build();
    }
}

通過@Configuration注解游盲,表明它是一個配置類,@EnableSwagger2開啟swagger2蛮粮。apiINfo()配置一些基本的信息益缎。apis()指定掃描的包會生成文檔。

三然想、寫生產(chǎn)文檔的注解

swagger通過注解表明該接口會生成文檔莺奔,包括接口名、請求方法变泄、參數(shù)令哟、返回信息的等等。

@Api:修飾整個類妨蛹,描述Controller的作用
@ApiOperation:描述一個類的一個方法屏富,或者說一個接口
@ApiParam:單個參數(shù)描述
@ApiModel:用對象來接收參數(shù)
@ApiProperty:用對象接收參數(shù)時,描述對象的一個字段
@ApiResponse:HTTP響應(yīng)其中1個描述
@ApiResponses:HTTP響應(yīng)整體描述
@ApiIgnore:使用該注解忽略這個API
@ApiError :發(fā)生錯誤返回的信息
@ApiParamImplicitL:一個請求參數(shù)
@ApiParamsImplicit 多個請求參數(shù)
現(xiàn)在通過一個栗子來說明:

package com.forezp.controller;

import com.forezp.entity.Book;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

import java.util.*;

/**
 * 用戶創(chuàng)建某本圖書 POST    /books/
 * 用戶修改對某本圖書    PUT /books/:id/
 * 用戶刪除對某本圖書    DELETE  /books/:id/
 * 用戶獲取所有的圖書 GET /books
 *  用戶獲取某一圖書  GET /Books/:id
 * Created by fangzhipeng on 2017/4/17.
 * 官方文檔:http://swagger.io/docs/specification/api-host-and-base-path/
 */
@RestController
@RequestMapping(value = "/books")
public class BookContrller {

    Map<Long, Book> books = Collections.synchronizedMap(new HashMap<Long, Book>());

    @ApiOperation(value="獲取圖書列表", notes="獲取圖書列表")
    @RequestMapping(value={""}, method= RequestMethod.GET)
    public List<Book> getBook() {
        List<Book> book = new ArrayList<>(books.values());
        return book;
    }

    @ApiOperation(value="創(chuàng)建圖書", notes="創(chuàng)建圖書")
    @ApiImplicitParam(name = "book", value = "圖書詳細(xì)實(shí)體", required = true, dataType = "Book")
    @RequestMapping(value="", method=RequestMethod.POST)
    public String postBook(@RequestBody Book book) {
        books.put(book.getId(), book);
        return "success";
    }
    @ApiOperation(value="獲圖書細(xì)信息", notes="根據(jù)url的id來獲取詳細(xì)信息")
    @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long",paramType = "path")
    @RequestMapping(value="/{id}", method=RequestMethod.GET)
    public Book getBook(@PathVariable Long id) {
        return books.get(id);
    }

    @ApiOperation(value="更新信息", notes="根據(jù)url的id來指定更新圖書信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "圖書ID", required = true, dataType = "Long",paramType = "path"),
            @ApiImplicitParam(name = "book", value = "圖書實(shí)體book", required = true, dataType = "Book")
    })
    @RequestMapping(value="/{id}", method= RequestMethod.PUT)
    public String putUser(@PathVariable Long id, @RequestBody Book book) {
        Book book1 = books.get(id);
        book1.setName(book.getName());
        book1.setPrice(book.getPrice());
        books.put(id, book1);
        return "success";
    }
    @ApiOperation(value="刪除圖書", notes="根據(jù)url的id來指定刪除圖書")
    @ApiImplicitParam(name = "id", value = "圖書ID", required = true, dataType = "Long",paramType = "path")
    @RequestMapping(value="/{id}", method=RequestMethod.DELETE)
    public String deleteUser(@PathVariable Long id) {
        books.remove(id);
        return "success";
    }

    @ApiIgnore//使用該注解忽略這個API
    @RequestMapping(value = "/hi", method = RequestMethod.GET)
    public String  jsonTest() {
        return " hi you!";
    }
}

通過相關(guān)注解蛙卤,就可以讓swagger2生成相應(yīng)的文檔狠半。如果你不需要某接口生成文檔,只需要在加@ApiIgnore注解即可颤难。需要說明的是神年,如果請求參數(shù)在url上,@ApiImplicitParam 上加paramType = “path” 行嗤。
spring cloud b2b2c電子商務(wù)社交平臺源碼請加企鵝求求:叁五叁六貳四柒貳五九

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末已日,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子栅屏,更是在濱河造成了極大的恐慌飘千,老刑警劉巖堂鲜,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異占婉,居然都是意外死亡泡嘴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門逆济,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酌予,“玉大人,你說我怎么就攤上這事奖慌∨壮妫” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵简僧,是天一觀的道長建椰。 經(jīng)常有香客問我,道長岛马,這世上最難降的妖魔是什么棉姐? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮啦逆,結(jié)果婚禮上伞矩,老公的妹妹穿的比我還像新娘。我一直安慰自己夏志,他們只是感情好乃坤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沟蔑,像睡著了一般湿诊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘦材,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天厅须,我揣著相機(jī)與錄音,去河邊找鬼食棕。 笑死九杂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宣蠕。 我是一名探鬼主播例隆,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抢蚀!你這毒婦竟也來了镀层?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唱逢,沒想到半個月后吴侦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坞古,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年备韧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痪枫。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡织堂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奶陈,到底是詐尸還是另有隱情易阳,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布吃粒,位于F島的核電站潦俺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏徐勃。R本人自食惡果不足惜事示,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望僻肖。 院中可真熱鬧肖爵,春花似錦、人聲如沸檐涝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谁榜。三九已至,卻和暖如春凡纳,著一層夾襖步出監(jiān)牢的瞬間窃植,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工荐糜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巷怜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓暴氏,卻偏偏與公主長得像延塑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子答渔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

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