生活随笔
收集整理的這篇文章主要介紹了
Spring MVC中使用 Swagger2 构建Restful API
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
0.Spring MVC配置文件中的配置
[java]?view plain
?copy<!--?設置使用注解的類所在的jar包,只加載controller類?-->??<span?style="white-space:pre">????</span><context:component-scan?base-package="com.jay.plat.config.controller"?/>???
[java]?view plain
?copy<!--?使用?Swagger?Restful?API文檔時,添加此注解?-->??????<mvc:default-servlet-handler?/>??
1.maven依賴
[html]?view plain
?copy????????????????????<dependency>??????????????<groupId>io.springfox</groupId>??????????????<artifactId>springfox-swagger2</artifactId>??????????????<version>2.4.0</version>??????????</dependency>??????????<dependency>??????????????<groupId>io.springfox</groupId>??????????????<artifactId>springfox-swagger-ui</artifactId>??????????????<version>2.4.0</version>??????????</dependency>??
2.Swagger配置文件
[java]?view plain
?copypackage?com.jay.plat.config.util;????import?org.springframework.context.annotation.Bean;??import?org.springframework.context.annotation.ComponentScan;??import?org.springframework.context.annotation.Configuration;??import?org.springframework.web.servlet.config.annotation.EnableWebMvc;??import?org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;??????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;????????@EnableWebMvc??@EnableSwagger2??@ComponentScan(basePackages?=?{"com.<span?style="font-family:Arial,?Helvetica,?sans-serif;">jay.</span>plat.config.controller"})??@Configuration??public?class?RestApiConfig?extends?WebMvcConfigurationSupport{????????@Bean??????public?Docket?createRestApi()?{??????????return?new?Docket(DocumentationType.SWAGGER_2)??????????????????.apiInfo(apiInfo())??????????????????.select()??????????????????.apis(RequestHandlerSelectors.basePackage("com.jay.plat.config.controller"))??????????????????.paths(PathSelectors.any())??????????????????.build();??????}????????private?ApiInfo?apiInfo()?{??????????return?new?ApiInfoBuilder()??????????????????.title("Spring?中使用Swagger2構建RESTful?APIs")??????????????????.termsOfServiceUrl("http://blog.csdn.net/he90227")??????????????????.contact("逍遙飛鶴")??????????????????.version("1.1")??????????????????.build();??????}??}??
配置說明:
? ? ? ? ? ??
[html]?view plain
?copy@Configuration?配置注解,自動在本類上下文加載一些環境變量信息??@EnableWebMvc???@EnableSwagger2?使swagger2生效??@ComponentScan("com.myapp.packages")?需要掃描的包路徑??
3.Controller中使用注解添加API文檔
[java]?view plain
?copypackage?com.jay.spring.boot.demo10.swagger2.controller;????import?java.util.ArrayList;??import?java.util.Collections;??import?java.util.HashMap;??import?java.util.List;??import?java.util.Map;????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.jay.spring.boot.demo10.swagger2.bean.User;????import?io.swagger.annotations.ApiImplicitParam;??import?io.swagger.annotations.ApiImplicitParams;??import?io.swagger.annotations.ApiOperation;????@RestController??@RequestMapping(value?=?"/users")???public?class?UserController?{????????static?Map<Long,?User>?users?=?Collections.synchronizedMap(new?HashMap<Long,?User>());????????@ApiOperation(value?=?"獲取用戶列表",?notes?=?"")??????@RequestMapping(value?=?{?""?},?method?=?RequestMethod.GET)??????public?List<User>?getUserList()?{??????????List<User>?r?=?new?ArrayList<User>(users.values());??????????return?r;??????}????????@ApiOperation(value?=?"創建用戶",?notes?=?"根據User對象創建用戶")??????@ApiImplicitParam(name?=?"user",?value?=?"用戶詳細實體user",?required?=?true,?dataType?=?"User")??????@RequestMapping(value?=?"",?method?=?RequestMethod.POST)??????public?String?postUser(@RequestBody?User?user)?{??????????users.put(user.getId(),?user);??????????return?"success";??????}????????@ApiOperation(value?=?"獲取用戶詳細信息",?notes?=?"根據url的id來獲取用戶詳細信息")??????@ApiImplicitParam(name?=?"id",?value?=?"用戶ID",?required?=?true,?dataType?=?"Long")??????@RequestMapping(value?=?"/{id}",?method?=?RequestMethod.GET)??????public?User?getUser(@PathVariable?Long?id)?{??????????return?users.get(id);??????}????????@ApiOperation(value?=?"更新用戶詳細信息",?notes?=?"根據url的id來指定更新對象,并根據傳過來的user信息來更新用戶詳細信息")??????@ApiImplicitParams({?@ApiImplicitParam(name?=?"id",?value?=?"用戶ID",?required?=?true,?dataType?=?"Long"),??????????????@ApiImplicitParam(name?=?"user",?value?=?"用戶詳細實體user",?required?=?true,?dataType?=?"User")?})??????@RequestMapping(value?=?"/{id}",?method?=?RequestMethod.PUT)??????public?String?putUser(@PathVariable?Long?id,?@RequestBody?User?user)?{??????????User?u?=?users.get(id);??????????u.setName(user.getName());??????????u.setAge(user.getAge());??????????users.put(id,?u);??????????return?"success";??????}????????@ApiOperation(value?=?"刪除用戶",?notes?=?"根據url的id來指定刪除對象")??????@ApiImplicitParam(name?=?"id",?value?=?"用戶ID",?required?=?true,?dataType?=?"Long")??????@RequestMapping(value?=?"/{id}",?method?=?RequestMethod.DELETE)??????public?String?deleteUser(@PathVariable?Long?id)?{??????????users.remove(id);??????????return?"success";??????}????}??
4.效果展示
訪問路徑:
[java]?view plain
?copyRestful?API?訪問路徑:???*?http:???*?eg:http:??
參考:
http://www.cnblogs.com/yuananyun/p/4993426.html
http://www.jianshu.com/p/8033ef83a8ed
總結
以上是生活随笔為你收集整理的Spring MVC中使用 Swagger2 构建Restful API的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。