Swagger使用教程

13 篇文章 0 订阅
订阅专栏

Swaggerj使用教程

简介

Swagger是个非常强大的API文档工具,它们可以帮助开发人员快速创建和管理API文档,并提供了丰富的功能和可视化界面。本文将为您介绍Swagger和Knife4j的使用教程,帮助您更好地了解和使用它们。

什么是Swagger?

这里是Swagger的官网: Swagger官网

Swagger是一个用于设计、构建、文档化和使用RESTful风格的Web服务的开源软件框架。它提供了一种简单而强大的方式来描述和访问API的功能,使得开发人员可以更轻松地构建和测试API。

Swagger的主要功能包括:

  1. API文档自动生成:Swagger可以根据代码注释自动生成API文档,包括API的路径、参数、请求和响应的格式等信息。

  2. 可视化界面:Swagger提供了一个可视化的界面,使开发人员可以直观地查看和测试API。

  3. API测试工具:Swagger提供了一个内置的API测试工具,可以直接在文档中进行API的测试和调试。

  4. API验证:Swagger可以验证API的请求和响应的格式是否符合定义的规范。

  • Swagger的安装和配置

要使用Swagger,您需要将Swagger的库添加到您的项目中,并进行相应的配置。

  1. 添加Swagger库:在Maven项目中,您可以在pom.xml文件中添加以下依赖:
<!--引入swagger-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>1.5.22</version>
</dependency>
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-models</artifactId>
    <version>1.5.22</version>
</dependency>
  1. 配置Swagger:在您的Spring Boot应用程序中,您需要创建一个配置类来启用Swagger和配置相关的参数。以下是一个示例配置类:
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.api"))
                .paths(PathSelectors.any())
                .build();
    }
}

在上述配置中,您需要指定API的包路径和URL路径的匹配规则。

  1. 启动应用程序:完成上述配置后,您可以启动您的应用程序,并访问http://localhost:8080/swagger-ui.html来查看生成的API文档。

实践

文章中的项目在这个gitee仓库中: 博客中的代码
在这里插入图片描述

Springboot集成Swagger

在这里插入图片描述

  • 开启Swagger
    在这里插入图片描述
@Configuration
@EnableWebMvc
@EnableSwagger2 // 开启Swagger2

public class SwaggerConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/**").addResourceLocations(
                "classpath:/static/");
        registry.addResourceHandler("swagger-ui.html").addResourceLocations(
                "classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations(
                "classpath:/META-INF/resources/webjars/");
        WebMvcConfigurer.super.addResourceHandlers(registry);
    }

}

配置好了之后,就可以启动了。
我配置的端口号是8080,然后打开这个地址就可以进入Swagger的页面:http://localhost:8080/swagger-ui.html

在这里插入图片描述

配置Swagger信息

  • Swagger的bean实例Docket

这是Swagger中的Docket的各项参数

  1. groupName(String):指定API文档的分组名称。可以使用多个Docket实例来创建多个API文档分组,每个分组可以有不同的配置。

  2. select():返回一个ApiSelectorBuilder对象,用于定义哪些接口和路径应该包含在生成的文档中。

    • apis(Predicate):用于筛选包含在文档中的接口。可以使用RequestHandlerSelectors类提供的一些静态方法来定义筛选规则,例如basePackage()、any()、none()等。

    • paths(Predicate):用于筛选包含在文档中的路径。可以使用PathSelectors类提供的一些静态方法来定义筛选规则,例如ant()、regex()等。

  3. apiInfo(ApiInfo):用于设置API文档的基本信息,包括标题、描述、版本号、联系人信息等。

    • title(String):设置API文档的标题。

    • description(String):设置API文档的描述。

    • version(String):设置API文档的版本号。

    • termsOfServiceUrl(String):设置API文档的服务条款URL。

    • license(License):设置API文档的许可证信息,包括名称和URL。

    • contact(Contact):设置API文档的联系人信息,包括姓名、邮箱、网址等。

  4. protocols(Set):设置API文档支持的协议。可以使用字符串集合指定多个协议,例如"http"、"https"等。

  5. host(String):设置API文档的主机名。可以指定完整的主机名,例如"www.example.com",或者只指定域名部分。

  6. pathMapping(String):设置API文档的基础路径。可以指定一个路径前缀,用于对所有路径进行统一的处理。

  7. enable(boolean):设置是否启用Swagger文档生成。默认情况下,Swagger文档生成是启用的。

  8. ignoredParameterTypes(Class<?>…):设置要忽略的参数类型。在生成API文档时,将忽略指定类型的参数。

  9. globalOperationParameters(List):设置全局的操作参数。这些参数将应用于所有的API操作。

  10. additionalModels(Class<?>…):设置额外的模型类。这些模型类将被包含在生成的API文档中。

在这里插入图片描述

@Configuration
@EnableWebMvc
@EnableSwagger2 // 开启Swagger2

public class SwaggerConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/**").addResourceLocations(
                "classpath:/static/");
        registry.addResourceHandler("swagger-ui.html").addResourceLocations(
                "classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations(
                "classpath:/META-INF/resources/webjars/");
        WebMvcConfigurer.super.addResourceHandlers(registry);
    }

    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo());
    }

    // 配置Swagger信息=apiInfo
    private ApiInfo apiInfo(){
        // 作者的信息
        Contact contact = new Contact("极客李华", "https://blog.csdn.net/qq_51447496?spm=1011.2415.3001.5343", "1369990609@qq.com");
        return new ApiInfo("极客李华的SwaggerAPI文档",
                "Wonder OF U",
                "V1.0",
                "https://blog.csdn.net/qq_51447496?spm=1011.2415.3001.5343",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0.html",
                new ArrayList());
    }

}

这个时候,这里的信息就发生了改变
在这里插入图片描述

配置扫描接口与开关

在这里插入图片描述

@Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                // RequestHandlerSelectors 配置要扫描接口的方式
                // basePackage
                // any() 扫描全部
                // none() 不扫描
                // withClassAnnotation 扫描类上的注解,参数是一个注解的反射对象
                // withMethodAnnotation 扫描方法上的注解,参数是一个注解的反射对象
                .apis(RequestHandlerSelectors.basePackage("com.example.swaggerdemo.controller"))
                // paths() 过滤什么路径
                .paths(PathSelectors.ant("/user/**")) // 允许/user/下面所有的
                .build();
    }

在上面的配置中,我们只允许user下面的包,这个时候,我们的接口文档里面就只有usercontroller了
在这里插入图片描述
在这里插入图片描述

分组也接口注释

配置API分组

.groupName("极客李华")

在这里插入图片描述
在这里插入图片描述

  • 配置多个分组
    在这里插入图片描述
@Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("极客李华")
                .enable(true) // enable是否启动Swagger,如果为False 则无法访问Swagger
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.swaggerdemo.controller"))
                .build();
    }

    @Bean
    public Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("A");
    }
    @Bean
    public Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("B");
    }
    @Bean
    public Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("C");
    }

现在就有了多个分组,可以看出来,每个分组的内容都不相同
在这里插入图片描述

接口注释
简介

在Swagger中,有一些用于定义API文档的注解和语法,包括@ApiModel、@ApiModelProperty、@ApiParam等。下面是对这些注解和语法的详细介绍:

  1. @ApiModel:用于对数据模型进行注解,定义在类上。可以用来描述请求或响应中的数据模型。常用的属性有:

    • value:指定数据模型的名称。

    • description:指定数据模型的描述。

    • parent:指定数据模型的父类。

    • discriminator:指定数据模型的鉴别器属性。

  2. @ApiModelProperty:用于对数据模型的属性进行注解,定义在类的字段或方法上。可以用来描述属性的名称、类型、描述等信息。常用的属性有:

    • value:指定属性的名称。

    • dataType:指定属性的数据类型。

    • required:指定属性是否必填。

    • example:指定属性的示例值。

    • notes:指定属性的描述。

    • hidden:指定属性是否在文档中隐藏。

  3. @ApiParam:用于对方法的参数进行注解,定义在方法的参数上。可以用来描述参数的名称、类型、描述等信息。常用的属性有:

    • value:指定参数的名称。

    • required:指定参数是否必填。

    • defaultValue:指定参数的默认值。

    • allowableValues:指定参数的可选值范围。

    • allowMultiple:指定参数是否允许多个值。

    • access:指定参数的访问权限。

  4. @ApiOperation:用于对API操作进行注解,定义在方法上。可以用来描述API操作的名称、描述、请求方法等信息。常用的属性有:

    • value:指定API操作的名称。

    • notes:指定API操作的描述。

    • httpMethod:指定API操作的请求方法。

    • response:指定API操作的响应类型。

    • consumes:指定API操作接受的媒体类型。

    • produces:指定API操作返回的媒体类型。

    • responseContainer:指定API操作的响应容器类型。

ApiModel和ApiModelProperty

在这里插入图片描述
这里面加上了对应的注释
在这里插入图片描述

ApiOperation和Api

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

接口测试

Swagger也是可以进行接口测试的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SpringBoot集成Swagger
weixin_45934729的博客
12-08 1225
SpringBoot集成Swagger 1、Swagger简介 前后端分离 前端 : 前端控制器、视图层 后端 : 后端控制器、服务层、数据访问层 前后端通过API进行交互 前后端相对独立且松耦合 前后端甚至可以部署在不同的服务器上 产生一个问题: 前后端集成联调,前端人员和后端人员无法做到,“及时协商,尽早解决”,最终导致问题集中爆发 解决问题 首先制定schema[计划的提纲],实时更新最新API,降低集成的风险; 前后端分离: 前端测试后端接口:postman (早些年) 后端提供接口,
Swagger接口文档基本使用教程
最新发布
www.h y p e r p l a s m a.top
08-19 872
Swagger是一个针对RESTful Web服务的框架,旨在简化接口的生成、描述和测试,非常适合前后端分离的开发模式。它能够自动生成在线接口文档,减轻后端开发人员的文档编写负担。此外,Swagger与Spring框架高度兼容,通过引入Springfox组件,开发者可以轻松集成Swagger。Knife4j作为Swagger的增强解决方案,提供了更为便利的API文档生成工具,适合于Java MVC框架。
Swagger归纳
愿你有前程可奔赴,亦有青春可回顾
04-14 319
Swagger 学习目标: 了解Swagger的作用和概念 了解前后端分离 在SpringBoot中继承Swagger 1. 简介 但是前后端分离产生一个问题: 前后端集成联调,前端人员和后端人员无法做到“及时协商,所以需要尽早解决”,最终导致问题集中爆发; 解决方案: 首先指定schema[计划的提纲],实时更新最新API,降低集成的风险; 早些年: 制定word计划文档; 前后端分离: 前端测试后端接口, 相关工具: PostMan 后端提供接口, 需要实时更新最新的消息改动 于是S
swagger详细用法
Hanson的博客
02-21 3872
超级详细swagger使用教程
Swagger的基本用法
L_GRAND_ORDER的博客
07-23 1170
swagger是解决前后端对接问题的API框架,用它可以自动生成接口文档 准备工作 使用swagger之前需要导入两个依赖 • Springfox-swagger2 • swagger-springmvc 对应的依赖写法: <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupI
Swagger使用的详细教程
mkmmkkghhhhhhhh的博客
01-15 1888
swager的详细使用,及其空指针bug解决
Swagger使用方法
秋枫落落的博客
05-28 1408
Swagger使用方法 1. pom引入依赖 <!--Swagger--> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.s...
自学springboot之整合swagger
codebeef的博客
06-04 1435
springboot + Swagger 学习目标: 了解Swagger的作用和概念 了解前后端分离 在SpringBoot中集成Swagger swagger简介 现在开发,很多采用前后端分离的模式,前端只负责调用接口,进行渲染,前端和后端的唯一联系,变成了API接口。因此,API文档变得越来越重要。swagger是一个方便我们更好的编写API文档的框架,而且swagger可以模拟http请求调用。 大部分采取的方式:Vue + SpringBoot,Vue通过js渲染页面,后端把数据传递给js,早期
Spring Boot整合swagger使用教程详解
08-18
Spring Boot整合Swagger使用教程详解 本文主要介绍了如何将Swagger集成到Spring Boot项目中,以自动生成接口文档,提高开发效率和减少维护成本。 知识点一:Swagger的优点 * 自动生成文档:Swagger可以根据接口的...
SpringBoot-SpringBoot整合Swagger使用教程(图文介绍,一篇就够了).html
06-28
SpringBoot-SpringBoot整合Swagger使用教程(图文介绍,一篇就够了) SpringBoot-SpringBoot整合Swagger使用教程(图文介绍,一篇就够了) SpringBoot-SpringBoot整合Swagger使用教程(图文介绍,一篇就够了) SpringBoot-...
swagger使用教程——快速使用swagger
m0_67402588的博客
06-12 925
官网:https://swagger.io/swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RestFul风格的web服务,总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器断的代码,允许API来始终保持同步。作用:1. 接口的文档在线自动生成。2. 功能测试。Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0文档等功能。Swagger-core: 用于
swagger使用方法
qq_41696633的博客
06-10 473
swagger使用方法1.需要的Maven依赖2.配置swagger3.结尾![启动完成](https://img-blog.csdnimg.cn/20200610125208800.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjk2NjMz,size_16,color_FFFFFF,t_70) 1.需要的Maven依赖 swagg
Swagger-的使用(详细教程)
m0_67392409的博客
07-28 2487
作为后端开放人员,最烦的事就是自己写接口文档和别人没有写接口文档,不管是前端还是后端开发,多多少少都会被接口文档所折磨,前端会抱怨后端没有及时更新接口文档,而后端又会觉得编写接口文档太过麻烦。Swagger可以较好的接口接口文档的交互问题,以一套标准的规范定义接口以及相关的信息,就能做到生成各种格式的接口文档,生成多种语言和客户端和服务端的代码,以及在线接口调试页面等等。只需要更新Swagger描述文件,就能自动生成接口文档,做到前端、后端联调接口文档的及时性和便利性。https。...
Swagger——快速使用swagger
热门推荐
YR_112233的博客
01-21 8万+
swagger使用教程,springboot整合使用swagger
Swagger 教程:快速入门Swagger的使用指南(超详细)
q—qun1150305204的博客
01-04 7159
Swagger 是一个开源的 API设计和文档工具,由 Tony Tam 创建于 2010 年。Swagger 提供了一种简单、易于使用的方式来设计、构建、文档化和测试。Swagger 可以自动生成交互式 API文档、客户端 SDK、服务器 stub 代码等,从而使开发人员更容易地开发、测试和部署 API。OpenAPI 规范:Swagger 采用 OpenAPI 规范(前身是 Swagger 规范),用于定义和描述 RESTful API。
Swagger介绍以及使用方法
weixin_45452725的博客
03-11 354
Swagger 是什么 一个api工具 为什么 为了前后端分离方便前后端统一接口 怎么用 ###1.导入swagger的包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</ver
swagger 1.6.2
03-13
Swagger是一种用于设计、构建和文档化RESTful API的开源框架。它提供了一组工具和规范,使得开发人员可以轻松地定义、测试和使用API。Swagger 1.6.2是Swagger框架的一个旧版本,它具有以下特点和功能: 1. API定义:Swagger 1.6.2允许开发人员使用简单的注解或配置文件来定义API的各个方面,包括请求和响应的数据类型、参数、路径、HTTP方法等。 2. API文档化:Swagger 1.6.2可以自动生成API的文档,包括API的描述、参数说明、示例请求和响应等信息。这样可以方便开发人员和其他团队成员查看和理解API的使用方式。 3. API测试:Swagger 1.6.2提供了一个交互式的UI界面,可以用于测试API的各个端点。开发人员可以在UI界面中输入参数并发送请求,然后查看响应结果,以验证API的正确性。 4. 客户端代码生成:Swagger 1.6.2可以根据API定义自动生成客户端代码,支持多种编程语言和框架。这样可以减少开发人员手动编写API调用代码的工作量。 5. 第三方集成:Swagger 1.6.2可以与其他工具和框架集成,例如Spring Boot、Node.js等。这样可以更好地支持API的开发和部署。
写文章

热门文章

  • IDEA配置Maven 71036
  • HTML登录页面 42319
  • SSH配置免密登录 37216
  • java: 无法访问org.springframework.boot.SpringApplication解决办法 37162
  • html轮播图 32865

分类专栏

  • 找工作记录 33篇
  • AI 20篇
  • 开发者开发小技巧 2篇
  • Java一百道面试题 55篇
  • Linux 22篇
  • 个人隐私内容
  • 英文文章练习 1篇
  • redis 37篇
  • 数据库面试题 8篇
  • 网络安全 10篇
  • MQ 11篇
  • Andriod开发 4篇
  • 嵌入式开发 1篇
  • 高并发 15篇
  • golang 19篇
  • Django 6篇
  • C++一百道面试题 21篇
  • Flask 8篇
  • 100道Java后端大厂面试题详解 17篇
  • 程序员科普栏目
  • PTA天梯赛
  • 一百道计算机网络面试题 39篇
  • Koa 10篇
  • Spark 9篇
  • Hive 10篇
  • Scala 9篇
  • docker 12篇
  • 课程设计 1篇
  • 寒假打卡31道大厂算法题 1篇
  • 有意思的python小程序 4篇
  • matlab 9篇
  • python授课 34篇
  • SpringCloud 13篇
  • mybaits-plus 12篇
  • HTML面试与笔试题 6篇
  • shiro 2篇
  • vant 10篇
  • Hadoop 10篇
  • MapReduce 10篇
  • JS学习之旅 55篇
  • go语言一百道练习题 11篇
  • electron 1篇
  • 我的架构师 3篇
  • element-ui 4篇
  • python数据分析 3篇
  • mybatis 11篇
  • python小游戏 10篇
  • 蓝桥杯考前每日一题 18篇
  • 一百道数据结构算法面试题 21篇
  • JVM 3篇
  • 机器学习 1篇
  • 个人资源 2篇
  • 图计算 9篇
  • 秒杀系统 27篇
  • springsecurity 4篇
  • Java基础 6篇
  • 日常生活中的算法问题 6篇
  • 人力资源管理 1篇
  • sql注入 1篇
  • 考研记录分享 1篇
  • Nginx 2篇
  • 流计算 9篇
  • Chatgpt小技巧 1篇
  • 交付工程师 2篇
  • 大数据 26篇
  • HDFS 11篇
  • Zoopkeeper 2篇
  • MongDB 1篇
  • 计算机网络 11篇
  • Oracle 6篇
  • jsp 1篇
  • MinIO 8篇
  • Fink 10篇
  • 云数据库 10篇
  • NoSQL 10篇
  • HBase 15篇
  • node.js 1篇
  • python量化 5篇
  • 软件测试面试题 1篇
  • 前端一百道面试题 5篇
  • C# 5篇
  • python爬虫 2篇
  • 有趣的github项目 1篇
  • TS 1篇
  • LINGO 1篇
  • Java底层设计原理 11篇
  • 系统架构师
  • 软件测试 3篇
  • Spss学习
  • 数学问题 1篇
  • JS笔试与面试题 3篇
  • CSS面试笔试题 1篇
  • JSOUP爬虫 1篇
  • Thymeleaf 1篇
  • PHP基础
  • python处理Excel
  • 操作系统的学习与提升 18篇
  • SpringBoot的故事 36篇
  • git学习 7篇
  • axios 3篇
  • Ajax 2篇
  • Postman 1篇
  • Java每一题 33篇
  • Leetcode算法问题讲解 24篇
  • 蓝桥杯web版
  • 团队天梯赛 9篇
  • 网络安全基础入门算法 3篇
  • Java基础实验 45篇
  • Java开发小问题 11篇
  • 微信小程序开发
  • JavaWeb 10篇
  • 人工智能 2篇
  • 设计模式 7篇
  • C++开发问题 8篇
  • CSS常见小案例 22篇
  • 数据库学习与提升 24篇
  • 计算机组成原理 11篇
  • 软件工程 11篇
  • Java算法基础 11篇
  • Leetcode学习之旅 104篇
  • C语言学习 16篇
  • C++学习内容 26篇
  • 网页设计 3篇
  • 程序员也要陶冶情操 4篇
  • C++写数据结构 4篇
  • Excel使用技巧 7篇
  • python学习之旅 13篇
  • 用编程学高数 1篇
  • uni-app学习之旅 19篇
  • 蓝桥杯提高题 18篇
  • 蓝桥杯基础练习 33篇
  • 软件设计师 1篇
  • C++的STL 7篇
  • 数据结构 4篇
  • window小问题 1篇
  • 蓝桥杯学习计划 7篇
  • Vue小案例 4篇
  • Vue的学习之旅 30篇
  • 通过项目学习C++特征语法 1篇
  • web开发小问题 1篇

最新评论

  • python制作俄罗斯方块

    Aqua_1201: 把FPS = 50后面的数字改大一点就可以了,比如225

  • IEEE754

    2401_87113906: 第一个是C0D80000H

  • 使用 Flask 连接数据库和用户登录功能进行数据库的CRUD

    Leland336: 删除和添加的模板没有,嘿嘿

  • 解决问题:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe

    Q_fancy: 请问这个修改的地方在哪里

  • 面试题:什么是虚函数?

    天城寺电子: 输出结果这里写错了,实际只运行了一个。

大家在看

  • Servlet核心技术
  • C++——用选择法对10个数值进行排序。 852
  • 如何编译HandyControl 320
  • Java 入门基础篇08 - Java的变量与数据类型的认识
  • C++--模板(template)详解—— 函数模板与类模板

最新文章

  • 分享一位非常厉害的学弟的文章
  • macOS下载安装mysql教程
  • postman使用小技巧:如何快速构建一个页面的测试
2024
09月 1篇
07月 2篇
06月 1篇
05月 6篇
04月 37篇
03月 40篇
02月 18篇
01月 64篇
2023年818篇
2022年465篇

目录

目录

分类专栏

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客李华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢动物雕塑设计公司吉林户外玻璃钢雕塑供应商云南喷泉雕塑玻璃钢福州玻璃钢雕塑销售河南玻璃钢雕塑设计方案黔西南商场美陈布置西安景区玻璃钢雕塑销售厂家厦门玻璃钢花盆批发当代玻璃钢雕塑方式云南玻璃钢卡通雕塑加工济南商场美陈市场价湖州个性化玻璃钢雕塑优势玻璃钢 大象 雕塑山西多彩玻璃钢雕塑价位大型校园玻璃钢景观雕塑设计浙江中庭商场美陈现价成都市厂家玻璃钢雕塑济宁清远玻璃钢切面动物雕塑东莞玻璃钢雕塑厂地深圳玻璃钢雕塑摆件批发小品系列玻璃钢雕塑哪家好软玻璃钢雕塑批发玻璃钢饼干雕塑湛江玻璃钢雕塑生产厂家浙江玻璃钢卡通雕塑公司河南玻璃钢青椒雕塑嘉峪关仿真玻璃钢雕塑安装玻璃钢校园公仔雕塑温州小区玻璃钢雕塑定做玻璃钢孔子雕塑工厂店香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化