Swagger组件学习 - 20181201

Swagger学习笔记

一.引言

  • Swagger是一个功能强大的API框架,用于生成、描述、调用、测试和可视化restful风格的web服务

  • 什么是OAS?
    OpenAPI规范(OpenAPI Specification 简称OAS)是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API定义的语言,来规范RESTful服务开发过程。目前V3.0版本的OpenAPI规范(也就是SwaggerV2.0规范)已经发布并开源在github上。即swagger2.0是基于 The Apache License, Version 2.0许可的OAS3.0实现。

  • 什么是Swaggger?
    Swagger是一个流行的API开发框架,这个框架以“开放API声明”(OpenAPI Specification,OAS)为基础,对整个API的开发周期都提供了相应的解决方案,是一个非常庞大的项目(包括设计、编码和测试,几乎支持所有语言)。

  • 简而言之:
    Swagger 是最流行的 API 开发工具,它遵循 OpenAPI Specification(OpenAPI 规范,也简称 OAS)。
    Swagger 可以贯穿于整个 API 生态,如 API 的设计、编写 API 文档、测试和部署。
    Swagger 是一种通用的,和编程语言无关的 API 描述规范
    前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让你更好的书写API文档的框架。
    官网:https://swagger.io/

二.Swagger 、Swagger UI、 Springfox简介,三者之间的联系

  • SwaggerUI
    允许用户使用Swagger编辑器描述OAS 3.0 API,并使用SwaggerUI可视化并自动生成OAS3.0中定义的文档
  • Springfox
    用Spring构建自动的 JSON API文档工具;暂时只支持Swqgger2.0.
    简而言之,就是基于spring框架的,java语言自动的一个OAS文档生成工具
  • 关系图例
    图一

三.Springboot 集成Swagger

  1. 创建springboot工程
  2. 导入依赖
 <!--swagger2 依赖-->
   <dependency>
       <groupId>io.springfox</groupId>
       <artifactId>springfox-swagger2</artifactId>
       <version>2.7.0</version>
   </dependency>
   
   <dependency>
       <groupId>io.springfox</groupId>
       <artifactId>springfox-swagger-ui</artifactId>
       <version>2.7.0</version>
   </dependency>
  1. 准备配置类
/**
 * springboot 和 Swagger整合
 */
@Configuration
@EnableSwagger2
public class SpringFoxConfig {//SwaggerConfig同SpringFoxConfig
    @Bean
    public Docket apiDocket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                // rest controller package
                .apis(RequestHandlerSelectors.basePackage("com.baizhi.controller"))     //指定扫描的包会生成文档
                .paths(PathSelectors.any())   //选择所有路径 也可使用/xx/**形式
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("springboot 和 Swagger整合")
                .description("我的swagger2入门学习")
                .termsOfServiceUrl("http://www.test.cn")
                .contact("my test")
                .version("1.0")
                .build();
    }
}

  1. 路径访问 swagger api 的默认地址是/v2/api-docs
    示例:http://localhost:9090/自定项目名/v2/api-docs

  2. 响应结果 json形式

{
	"swagger":"2.0",
	"info":{
		"description":"我的swagger2入门学习",
		"version":"1.0",
		"title":"springboot 和 Swagger整合"
		,"termsOfService":"http://www.test.cn",
		"contact":{
			"name":"my test"
			}
		},
	"host":"localhost:9090",
	"basePath":"/sf"
}

四.Swagger文档的生成注解(起别名)

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

@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiModelProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiClass
@ApiError
@ApiErrors
@ApiImplicitParam:一个请求参数
@ApiImplicitParams多个请求参数

五.Restful风格controller开发

@Api(value = "swagger controller",tags = "swagger操作接口")
@RestController
@RequestMapping("/rest")
public class RestController {

    @ApiOperation(value = "根据用户名 获取欢迎语",notes = "注意事项")
    @GetMapping("/helloello")
    public String sayHello(@ApiParam(name="name",value = "用户名",required = true)
                           @RequestParam(required = true)
                                   String name){
        return "Hello: "+name;
    }

    //@ApiIgnore
    @ApiOperation(value = "新增用户信息")
    @PostMapping("/add")
    public String addUser(@RequestBody @ApiParam(name="user",value="用户对象",required =
            true) User user){
        System.out.println(user);
        return "OK";
    }
    @ApiOperation(value = "根据年龄和姓名查询用户信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name="userAge",value = "用户年龄",required =
                    true,dataTypeClass = Integer.class,paramType = "query"),
            @ApiImplicitParam(name="name",value="用户姓名",dataType = "string",paramType
                    = "query")
    })
    @GetMapping("/select")
    @ApiResponses({
            @ApiResponse(code = 404,message = "没有找到资源"),
            @ApiResponse(code = 401,message = "权限不够")
    })
    public  String selectUser(@RequestParam("userAge") Integer age,String name){
        return age + " | "+name;
    }
}

其他资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET Framework是由微软公司开发的一种基于Windows操作系统的应用程序框架。它提供了一个统一的编程模型、一系列预先编写好的类库和工具,帮助开发人员创建和运行各种类型的应用程序。.NET Framework使用的主要编程语言是C#。 C#是一种面向对象的高级编程语言,它结合了C和C++的特点,并添加了一些现代化的特性。C#的语法简洁易懂,容易学习和使用,同时具备很高的灵活性和可扩展性。它支持面向对象编程、事件驱动编程和组件编程,可以用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序和移动应用程序等。 .NET Framework提供了许多重要的功能和特性,包括多语言互操作性、自动垃圾回收、安全性和可靠性等。它还提供了一套完整的类库,包括用于用户界面、数据访问、网络编程、安全性和多媒体等方面的类库,使开发人员可以更快地开发出高效、可靠的应用程序。 此外,.NET Framework还提供了一系列强大的开发工具,包括可视化开发环境Visual Studio和命令行编译器等。它们提供了丰富的开发工具和调试功能,帮助开发人员更快地编写、测试和调试代码。 总之,.NET Framework是为开发Windows平台应用程序而设计的一种强大的框架,它结合了C#编程语言提供了丰富的功能和工具,使开发人员能够更加高效地创建出高质量的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值