1.引入依赖:
<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>
2.编写Swagger2实体类
package com.mye.aaa.jiao.entity; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; 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; @Configuration//表明是一个配置类 @EnableSwagger2//开启Swagger2的功能 public class Swagger2 { @Bean//注入一个Docket的Bean该Bean包含了apiInfo,即基本API文档的描述信息,以及包扫描的基本包名等信息 public Docket createRestApi(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.mye.aaa.jiao.web")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("swagger建立api文档") .description("restful风格,https://my.oschina.net/jhy168") .termsOfServiceUrl("https://my.oschina.net/jhy168") .version("1.0") .build(); } }
3.添加UserService类(基于 四、springboot整合JPA 的代码)
package com.mye.aaa.jiao.service; import com.mye.aaa.jiao.dao.UserDao; import com.mye.aaa.jiao.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserService { @Autowired private UserDao userDao; public User findUserByName(String username) { return userDao.findByUsername(username); } public List<User> findAll(){ return userDao.findAll(); } public User saveUser(User user){ return userDao.save(user); } public User findUserById(Long id){ return userDao.getOne(id); } public User updateUser(User user){ return userDao.saveAndFlush(user); } public void deleteUser(Long id){ userDao.deleteById(id); } }
4.修改Usercontroller
package com.mye.aaa.jiao.web; import com.mye.aaa.jiao.entity.User; import com.mye.aaa.jiao.service.UserService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import java.util.List; @RequestMapping("/user") @RestController public class UserController { @Autowired UserService userService; @ApiOperation(value="用户列表",notes="用户列表") @RequestMapping(value="",method = RequestMethod.GET) public List<User> getUser002(){ List<User> users = userService.findAll(); return users; } @ApiOperation(value="创建用户",notes="创建用户") @RequestMapping(value="",method = RequestMethod.POST) public User postUser (@RequestBody User user){ return userService.saveUser(user); } @ApiOperation(value="获取用户信息",notes="根据id获取详情") @RequestMapping(value="/id/{id}",method = RequestMethod.GET) public User getUser001 (@PathVariable("id") Long id){ return userService.findUserById(id); } @ApiOperation(value="更新信息",notes="根据id更新用户信息") @RequestMapping(value="/{id}",method = RequestMethod.PUT) public User putUser (@PathVariable Long id,@RequestBody User user){ User user1 = new User(); String username = user.getUsername(); String password = user.getPassword(); user1.setUsername(username); user1.setPassword(password); user1.setId(id); return userService.updateUser(user1); } @ApiOperation(value="删除用户",notes="根据id删除用户") @RequestMapping(value="/{id}",method = RequestMethod.DELETE) public String deleteUser(@PathVariable Long id){ userService.deleteUser(id); return "success"; } @ApiIgnore @RequestMapping(value="/hi",method = RequestMethod.GET) public String jsonTest(){ return "你好!"; } @GetMapping("/username/{username}") public User getUser(@PathVariable("username") String username) { return userService.findUserByName(username); } }
5.访问http://localhost:8080/swagger-ui.html
如图:
附:
@Api:修饰整个类,用于controller类上
@ApiOperation:描述一个接口,用户controller方法上
@ApiParam:单个参数描述
@ApiModel:用来对象接收参数,即返回对象
@ApiModelProperty:对象接收参数时,描述对象的字段
@ApiResponse:Http响应其中的描述,在ApiResonse中
@ApiResponses:Http响应所有的描述,用在
@ApiIgnore:忽略这个API
@ApiError:发生错误的返回信息
@ApiImplicitParam:一个请求参数
@ApiImplicitParam:多个请求参数