Swagger2

官网:https://swagger.io/

springboot整合Swagger

一:pom依赖

1

2

3

4

5

6

7

8

9

10

11

     <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>

注意:需要指定版本号,因为springboot父工程没有管理swagger的版本号

 

二、Swagger配置类

特别要注意的是里面配置了api文件也就是controller包的路径,不然生成的文档扫描不到接口。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

package com.wendao.swagger.config;

 

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;

@Configuration

public class Swagger2Configuration {

 

 

        @Bean

        public Docket createRestApi() {

            return new Docket(DocumentationType.SWAGGER_2)

                .apiInfo(apiInfo())

                .select()

                .apis(RequestHandlerSelectors.basePackage("com.wendao.swagger.web"))

                .paths(PathSelectors.any())

                .build();

        }

 

        private ApiInfo apiInfo() {

            return new ApiInfoBuilder()

                .title("学院")

                .description("线上教学平台")

                .termsOfServiceUrl("http://www.wendaoxueyuan.com")

                .version("1.0")

                .build();

        }

}

注意: 从Spring3.0,@Configuration用于定义配置类,使用java配置替换xml配置文件,等价于XML中配置beans

配置类只需要加上@Configuration这个注解就好了

三:在引导类中开启swagger

四:Restful 接口文档

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

package com.wendao.swagger.web;

 

 

import com.wendao.swagger.pojo.Result;

import com.wendao.swagger.pojo.User;

import io.swagger.annotations.ApiImplicitParam;

import io.swagger.annotations.ApiImplicitParams;

import io.swagger.annotations.ApiOperation;

import org.springframework.web.bind.annotation.*;

import springfox.documentation.annotations.ApiIgnore;

 

import java.util.*;

 

@RestController

public class UserController {

 

    // 创建线程安全的Map

    static Map<Integer, User> users = Collections.synchronizedMap(new HashMap<Integer, User>());

 

    /**

     * 添加用户

     *

     * @param user

     * @return

     */

    @ApiOperation(value = "创建用户", notes = "根据User对象创建用户")

    @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")

    @RequestMapping(value = "user", method = RequestMethod.POST)

    public Result add(@RequestBody User user) {

 

        return new Result(true, "添加成功");

    }

 

 

    /**

     * 根据id删除用户

     *

     * @param id

     * @return

     */

    @ApiOperation(value = "删除用户", notes = "根据url的id来指定删除用户")

    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path")

    @RequestMapping(value = "user/{id}", method = RequestMethod.DELETE)

    public Result delete(@PathVariable(value = "id") Integer id) {

 

        return new Result(true, "删除成功");

    }

 

    /**

     * 根据id修改用户信息

     *

     * @param user

     * @return

     */

    @ApiOperation(value = "更新信息", notes = "根据url的id来指定更新用户信息")

    @ApiImplicitParams({

        @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path"),

        @ApiImplicitParam(name = "user", value = "用户实体user", required = true, dataType = "User")

    })

    @RequestMapping(value = "user/{id}", method = RequestMethod.PUT)

    public Result update(@PathVariable("id") Integer id, @RequestBody User user) {

        return new Result(true, "修改成功");

    }

 

    /**

     * 根据ID查询用户

     *

     * @param id

     * @return

     */

    @ApiOperation(value = "获取用户详细信息", notes = "从url的id来获取用户详细信息")

    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Integer", paramType = "path")

    @RequestMapping(value = "user/{id}", method = RequestMethod.GET)

    public User getUserById(@PathVariable(value = "id") Integer id) {

 

        return new User("jack", 12);

    }

 

    /**

     * 查询用户列表

     *

     * @return

     */

    @ApiOperation(value = "获取用户列表", notes = "获取用户列表")

    @RequestMapping(value = "users", method = RequestMethod.GET)

    public List<User> getUserList() {

        List<User> userList = new ArrayList<>();

        userList.add(new User("jack", 12));

        userList.add(new User("rose", 19));

        return userList;

    }

 

 

    @ApiIgnore//使用该注解忽略这个API

    @RequestMapping(value = "/hi", method = RequestMethod.GET)

    public String jsonTest() {

        return " hi you!";

    }

 

}

五、查看Swagger2文档

启动SpringBoot项目,访问 http://localhost:8080/swagger-ui.html

六、Swagger注解

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

@Api:修饰整个类,描述Controller的作用

@ApiOperation:描述一个类的一个方法,或者说一个接口

@ApiParam:单个参数描述

@ApiModel:用对象来接收参数

@ApiProperty:用对象接收参数时,描述对象的一个字段

@ApiResponse:HTTP响应其中1个描述

@ApiResponses:HTTP响应整体描述

@ApiIgnore:使用该注解忽略这个API

@ApiError :发生错误返回的信息

@ApiImplicitParam:一个请求参数

@ApiImplicitParams:多个请求参数

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值