Rest 文件神器 swagger (2)
例項程式碼: https://bitbucket.org/fangj/swagger-springmvc-example
主要參考:
http://blog.zenika.com/index.php?post/2013/07/11/Documenting-a-REST-API-with-Swagger-and-Spring-MVC
http://www.3pillarglobal.com/insights/restful-api-documentation-using-swagger-and-spring-mvc
步驟:
- 先借一個Spring MVC的工程程式碼 http://www.mkyong.com/spring-mvc/spring-3-rest-hello-world-example/
修改pom.xml 加入jetty
<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.2.v20140723</version> </plugin>
mvn jetty:run試下可以跑起來
加入swagger-springmvc
<dependency> <groupId>com.mangofactory</groupId> <artifactId>swagger-springmvc</artifactId> <version>0.5.2</version> </dependency>
在spring的xml中加入
<bean class="com.mangofactory.swagger.configuration.DocumentationConfig" /> <context:property-placeholder location="classpath:/swagger.properties" />
在resouces下面加入swagger.properties,內容如下:
documentation.services.version=1.0 documentation.services.basePath=http://localhost:8080
理論上講就OK了。但是似乎我的Spring MVC裡少了些東西,而且如果返回JSON需要JACKSON。所以再從以前的工程裡拷貝一堆到POM。最後POM長這樣:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mkyong.common</groupId> <artifactId>SpringMVC</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>SpringMVC Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>4.0.0.RELEASE</spring.version> <slf4j.version>1.6.4</slf4j.version> <junit.version>4.11</junit.version> <jackson.version>1.9.10</jackson.version> </properties> <dependencies> <!-- Spring 3 dependencies --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.0.0.RELEASE</version> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency> <!--slf4j--> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>com.mangofactory</groupId> <artifactId>swagger-springmvc</artifactId> <version>0.5.2</version> </dependency> </dependencies> <build> <finalName>SpringMVC</finalName> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.2.v20140723</version> </plugin> </plugins> </build> </project>
mvn jetty:run跑下。訪問 http://localhost:8080/api-docs/ 可以看到文件描述了。
- 此時伺服器端的任務已經完成。但是最好玩的在後面。從https://github.com/swagger-api/swagger-ui上下載程式碼。拷貝其中dist目錄中的部分出來。到webapp/static/swagger目錄
在spring的xml中加入這一句把靜態資源目錄暴露出來
<mvc:resources mapping="/static/**" location="/static/"/>
- 對swagger/index.html做點小修改。把googlefonts那行刪了,國內忒慢。把"url=..."那行改為上面的地址url = "http://localhost:8080/api-docs";
- 在執行下mvn jetty:run 訪問 http://localhost:8080/static/swagger/index.html#!/movie/getMovie 可以看到
收工!
======= 更新 ======
如使用1.0.2版本的springmvc
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>1.0.2</version>
</dependency>
需加入
<bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />
相關文章
- Rest 文件神器 swagger (1)RESTSwagger
- 線上API介面文件swagger2APISwagger
- API 文件神器 Swagger 介紹及在 PHP 專案中使用APISwaggerPHP
- 用Swagger2markup匯出介面文件Swagger
- REST framework:介面文件RESTFramework
- Swagger API 文件SwaggerAPI
- Harbor配置Swagger遠端REST APISwaggerRESTAPI
- 介面測試、管理神器-SwaggerSwagger
- Gin 生成 Swagger 文件Swagger
- 如何使用swagger2輕鬆生成線上介面文件Swagger
- springMVC整合swagger2來輸出介面文件SpringMVCSwagger
- JEESZ REST 服務介面文件REST
- Laravel Swagger 生成 API 文件LaravelSwaggerAPI
- Spring boot 之自動生成API文件swagger2Spring BootAPISwagger
- SpringBoot2 整合 Swagger2文件 使用BootstrapUI頁面Spring BootSwaggerUI
- MarkDown/reST 文件釋出流水線REST
- 使用apidoc文件神器,快速生成api文件API
- Swagger 與 Spring Boot REST API 整合詳解SwaggerSpring BootRESTAPI
- Lumen 微服務生成 Swagger 文件微服務Swagger
- swagger線上api文件搭建指南SwaggerAPI
- Spring Boot 整合 Swagger2,構建強大的 API 文件Spring BootSwaggerAPI
- Spring Cloud Gateway 聚合swagger文件SpringCloudGatewaySwagger
- Swagger匯出Api文件檔案SwaggerAPI
- 使用go-swagger為golang API自動生成swagger文件SwaggerGolangAPI
- SpringBoot整合Swagger2,再也不用維護介面文件了!Spring BootSwagger
- 有了Swagger2,再也不用為寫Api文件頭疼了SwaggerAPI
- Spring Boot 2.x基礎教程:Swagger靜態文件的生成Spring BootSwagger
- 懶得寫文件,swagger文件匯出來不香嗎Swagger
- Go語言使用swagger生成介面文件GoSwagger
- Gin 如何動態生成模型 swagger 文件模型Swagger
- 微服務雲架構-Swagger2構建強大的RESTful API文件微服務架構SwaggerRESTAPI
- 關於API文件瀏覽神器DashAPI
- 兼顧測試功能的API文件管理工具:Swagger與RAP2APISwagger
- [Django REST framework - 自動生成介面文件、分頁]DjangoRESTFramework
- Spring Boot 整合 Swagger 構建介面文件Spring BootSwagger
- Swagger API文件集中化註冊管理SwaggerAPI
- NET 5.0 Swagger API 自動生成MarkDown文件SwaggerAPI
- 介面文件下的滲透測試(Swagger)Swagger