Java-Swagger

1评甜、swagger學習

Swagger定義
Swagger同類工具
Swagger和web項目結(jié)合
Swagger在公司項目中如何應(yīng)用

2、Swagger定義

  • Swagger官網(wǎng):http://swagger.io
  • GitHub地址:https://github.com/swagger-api
  • 官方注解文檔:http://docs.swagger.io/swagger-core/apidocs/index.html
  • Swagger-UI地址:https://github.com/swagger-api/swagger-ui
  • 概念:
    A Powerful Interface to your API
    Swagger 是一個規(guī)范和完整的框架仔涩,用于生成忍坷、描述、調(diào)用和可視化 RESTful 風格的 Web 服務(wù)熔脂∨逖校總體目標是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來更新。文件的方法霞揉,參數(shù)和模型緊密集成到服務(wù)器端的代碼旬薯,允許API來始終保持同步。 Swagger 讓部署管理和使用功能強大的API從未如此簡單适秩。

2.1 Swagger子項目

Swagger子項目

其實swagger是一個比較大的項目绊序,就像spring一樣,他下面有很多模塊秽荞,我們現(xiàn)在只需要使用它的UI模骤公。

3、相關(guān)學習博客

4扬跋、swagger和springmvc整合

4.1 依賴管理

 <!-- swagger-mvc -->
    <dependency>
      <groupId>com.mangofactory</groupId>
      <artifactId>swagger-springmvc</artifactId>
      <version>1.0.2</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.4.2</version>
    </dependency>
    <!-- swagger-mvc -->

4.2 Swagger配置

Swagger的配置最終就是配置一個config類阶捆,通過Java編碼的方式實現(xiàn)配置:

@Configuration
@EnableSwagger
public class SwaggerConfig {

    private SpringSwaggerConfig springSwaggerConfig;

    /**
     * Required to autowire SpringSwaggerConfig
     */
    @Autowired
    public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig)
    {
        this.springSwaggerConfig = springSwaggerConfig;
    }

    /**
     * Every SwaggerSpringMvcPlugin bean is picked up by the swagger-mvc
     * framework - allowing for multiple swagger groups i.e. same code base
     * multiple swagger resource listings.
     */
    @Bean
    public SwaggerSpringMvcPlugin customImplementation()
    {
        return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
                .apiInfo(apiInfo())
                .includePatterns(".*?");
    }

    private ApiInfo apiInfo()
    {
        ApiInfo apiInfo = new ApiInfo(
                "My Apps API Title",
                "My Apps API Description",
                "My Apps API terms of service",
                "My Apps API Contact Email",
                "My Apps API Licence Type",
                "My Apps API License URL");
        return apiInfo;
    }
}

這個是個模板,里面內(nèi)容可以自己定義钦听,修改基本上是對apiinfo自定義數(shù)據(jù)洒试。
在spring中注入Bean:
<context:component-scan base-package="net.shopin.swagger"/>

swagger基本就算是配置好了,剩下的事情就是接口編寫和展示了彪见。

引入swagger-UI組件
更改項目文檔路徑

更改項目文檔路徑

修改index.html文件中的路徑:默認是從連接http://petstore.swagger.io/v2/swagger.json獲取API的JSON,我們改為 http://{ip}:{port}/{projectName}/api-docs 的形式儡司,也就ip:端口號/項目名/api-docs

配置Xml

最后就是對controller的書寫:

@Api(value = "product", description = "商品管理", produces = MediaType.APPLICATION_JSON_VALUE)
@Controller
public class ProductController {

    @Autowired
    private ProductService productService;

    @ApiOperation(value = "獲得商品信息", notes = "獲取商品信息(用于數(shù)據(jù)同步)", httpMethod = "POST", produces=MediaType.APPLICATION_JSON_VALUE)
    @ApiResponses(value = {@ApiResponse(code = 200, message = "商品信息"),
        @ApiResponse(code = 201, message = ErrorType.errorCheckToken + "(token驗證失敗)",  response=String.class),
        @ApiResponse(code = 202, message = ErrorType.error500 + "(系統(tǒng)錯誤)",response = String.class)})
    @RequestMapping(value = RestUrl.getProduct, method = RequestMethod.POST)
    @ResponseBody
    public ResultDTO<Products> getProduct(@ApiParam(value = "json參數(shù)",  required = true) @RequestBody BaseParam param)throws Exception {
        return productService.getProduct(param);
    }
}

當然你還需要是配置XML

ぐl(fā)ovefor丶  11:21:08
 <!-- swagger 集成-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>
配置XML的文件
  • @API:表示一個開放的API,可以通過description簡明的描述API的功能余指,produce指定API的mime類型
  • 一個@API下,可以有多個@ApiOperation,表示針對該API的CRUD操作跷坝,在ApiOperation Annotation中還可以通過value酵镜,notes描述該操作的作用,response描述正常情況下該請求返回的對象類型
  • 在一個@ApiOperation下柴钻,可以通過@ApiResponses描述API操作可能出現(xiàn)的異常情況
  • @ApiParam用于描述該API操作接收的參數(shù)類型淮韭,value用于描述參數(shù),required指明參數(shù)是否為必須贴届。
  • @ApiModelProperty中靠粪,value指定描述蜡吧,required指明是否為必須

代碼效果

WechatIMG1153.png

實現(xiàn)效果
WechatIMG1156.png

備注:

swagger 在不同語言中的應(yīng)用,可以直接在網(wǎng)頁上書寫并生成Demo地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市占键,隨后出現(xiàn)的幾起案子昔善,更是在濱河造成了極大的恐慌,老刑警劉巖畔乙,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件君仆,死亡現(xiàn)場離奇詭異,居然都是意外死亡牲距,警方通過查閱死者的電腦和手機返咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牍鞠,“玉大人咖摹,你說我怎么就攤上這事∧咽觯” “怎么了萤晴?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長龄广。 經(jīng)常有香客問我硫眯,道長,這世上最難降的妖魔是什么择同? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任两入,我火速辦了婚禮,結(jié)果婚禮上敲才,老公的妹妹穿的比我還像新娘裹纳。我一直安慰自己,他們只是感情好紧武,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布剃氧。 她就那樣靜靜地躺著,像睡著了一般阻星。 火紅的嫁衣襯著肌膚如雪朋鞍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天妥箕,我揣著相機與錄音滥酥,去河邊找鬼。 笑死畦幢,一個胖子當著我的面吹牛坎吻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宇葱,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瘦真,長吁一口氣:“原來是場噩夢啊……” “哼刊头!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起诸尽,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤原杂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后弦讽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體污尉,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年往产,在試婚紗的時候發(fā)現(xiàn)自己被綠了被碗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡仿村,死狀恐怖锐朴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔼囊,我是刑警寧澤焚志,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站畏鼓,受9級特大地震影響酱酬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜云矫,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一膳沽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧让禀,春花似錦挑社、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腮敌,卻和暖如春阱当,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糜工。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工斗这, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人啤斗。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像赁咙,于是被迫代替她去往敵國和親钮莲。 傳聞我的和親對象是個殘疾皇子免钻,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,077評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)崔拥,斷路器极舔,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 當你的快樂,是建立在和他人比較链瓦,他人夸贊拆魏,而不是自己在內(nèi)心真正對自己肯定的時候,你不會得到真正的快樂慈俯。 翻翻聊天記...
    蘇錸閱讀 248評論 0 0
  • 你以前學習勁頭高的是些什么時候渤刃? 1 在乎的人的認可 2 自我收獲的認可,對自己的認可 學習效率差的時候是些什么時...
    做個好學生閱讀 1,632評論 0 0
  • 作為一枚選擇困難癥患者贴膘,我每天都在想畫畫和不知道先畫什么好之間糾結(jié)搖擺卖子。常常坐在工作臺前,從鋪開畫紙到拿起筆刑峡,要浪...
    心藍丫頭閱讀 3,405評論 4 70