Java-Swagger

1、swagger學(xué)習(xí)

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 風(fēng)格的 Web 服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來始終保持同步。 Swagger 讓部署管理和使用功能強大的API從未如此簡單。

2.1 Swagger子項目

Swagger子項目

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

3、相關(guān)學(xué)習(xí)博客

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文件中的路徑:默認(rèn)是從連接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);
    }
}

當(dāng)然你還需要是配置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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容