Springboot项目使用smart-doc+Apifox 便捷生成管理接口文档

84 篇文章 29 订阅
订阅专栏
20 篇文章 8 订阅
订阅专栏

1. 前言

相信大家在Java开发中都用过不少接口文档工具,最常见的就是Swagger了。但它有一个不好的缺点就是,想要接口文档清晰和美观需要加入许多声明和注解,代码的侵入性很强。最近在维护一个老的项目,项目中没有用到Swagger,之前前后端的交互用的是Yapi,接口写好了,手动在Yapi上手写一遍文档,真的要吐血,于是决定寻找一款工具可以方便快捷的生成API文档。于是乎百度谷歌各类工具,以下是我尝试过的工具或者平台:
在这里插入图片描述

可以说市面上常用的都试过了一遍,最后选定了smart-doc+Apifox的组合!

smart-doc: https://gitee.com/smart-doc-team/smart-doc


Apifox: https://www.apifox.cn/#


PS:smart-doc 推荐搭配Torna一起使用,我看了Torna确实做得不错,也是开源的,可以私有化部署用起来,一般情况也够用了,但是我想要测试用例保存功能(并且问过Torna作者不打算做这个功能),所以选择了Apifox

2. 使用流程

  1. smart-docJavaDoc的标准写好参数、方法、类等的注释(这一点深得我心,我是一个很喜欢写注释的程序员,非常鄙视一点注释都不写的猿类,代码全裸,维护和看着都贼不舒服,用了这个工具可以让项目最起码的一些注释会有。)
    PS:这个注释标准就是很通常的注释标准!
  2. 引入 smart-doc的Maven插件,生成openapi.json文件
  3. Apifox中导入openapi.json文件,生成和管理对应的接口

3. 使用示例

3.1 接口代码编写

Controller增删查改

package com.luqiao.boot.controller.auth;


/**
 * 部门相关接口
 *
 * @author Gangbb
 * @date 2022/1/16
 **/
@RestController
@RequestMapping("/auth/dept")
public class AuthDeptController extends BaseController {

    private final IAuthOrganizationService organizationService;

    public AuthDeptController(IAuthOrganizationService organizationService) {
        this.organizationService = organizationService;
    }

    /**
     * 获取组织下部门列表
     *
     * @param dto 部门列表请求 dto
     * @return ApiResult<PageResult<DeptListVO>> 部门列表请求返回参数
     * @author Gangbb
     * @date 2021/10/29
     **/
    @GetMapping("/list")
    public ApiResult<PageResult<DeptListVO>> list(@Validated DeptListDTO dto) {

        return ApiResult.success(organizationService.getDeptList(dto));
    }

    /**
     * 添加部门
     *
     * @param addDeptDTO 新增部门 dto
     * @return ApiResult 操作结果
     * @author Gangbb
     * @date 2021/10/29
     **/
    @PostMapping
    public ApiResult add(@RequestBody @Validated AddDeptDTO addDeptDTO) {
        // DTO转换
        AddOrganizationDTO addOrganizationDTO = AddDeptDTO.INSTANCE.toAddOrganizationDTO(addDeptDTO);

        return toApiRes(organizationService.insertOrganization(addOrganizationDTO));
    }


    /**
     * 编辑部门
     *
     * @param updateDeptDTO
     * @return ApiResult 操作结果
     * @author Gangbb
     * @date 2021/10/29
     **/
    @PutMapping
    public ApiResult updateDept(@RequestBody @Validated UpdateDeptDTO updateDeptDTO) {
        UpdateOrgDTO updateOrgDTO = UpdateDeptDTO.INSTANCE.toUpdateOrgDTO(updateDeptDTO);

        return toApiRes(organizationService.editOrg(updateOrgDTO));
    }

    /**
     * 删除部门
     *
     * @param ids 待删除部门的id数组
     * @return ApiResult 操作结果
     * @author Gangbb
     * @date 2021/10/26
     **/
    @DeleteMapping("/{ids}")
    public ApiResult deleteDept(@NotEmpty(message = "ids不能为空") @PathVariable Long[] ids) {

        return toApiRes(organizationService.deleteOrg(ids));
    }
}

其中一个DTO(请求参数)和VO(返回参数)代码示例:

/**
 * 部门列表请求 dto
 *
 * @author Gangbb
 * @date 2022/1/19
 **/
@Data
public class DeptListDTO extends PageRequest {

    /** 组织名称 */
    private String deptName;

    /** 组织架构id*/
    @NotNull(message = "所属组织架构(公司)id organizationId 不能为空")
    private Long organizationId;

}
/**
 * 部门列表请求返回参数
 *
 * @author Gangbb
 * @date 2022/1/19
 **/
@Data
public class DeptListVO {
    /**
     * 部门id
     */
    private Long id;

    /**
     * 部门名字
     */
    private String deptName;

    /**
     * 备注
     */
    private String remark;

}

代码中的逻辑内容和未贴出的方法和类不是重点,重点看代码的注释就行!就是最基本的注释。

3.2 引入Smart-doc插件

我这里是单体多模块项目,在根pom.xml引入:

<!--编译及打包项目配置-->
    <build>
        <plugins>
            <!--smart-doc begin-->
            <plugin>
                <groupId>com.github.shalousun</groupId>
                <artifactId>smart-doc-maven-plugin</artifactId>
                <version>2.3.6</version>
                <configuration>
                    <!--指定生成文档的使用的配置文件,配置文件放在自己的项目中-->
                    <configFile>./src/main/resources/smart-doc.json</configFile>
                    <!--指定项目名称,推荐使用动态参数,例如${project.description}-->
                    <!--如果smart-doc.json中和此处都未设置projectName,2.3.4开始,插件自动采用pom中的projectName作为设置-->
                    <projectName>test-system</projectName>
                </configuration>
                <executions>
                    <execution>
                        <!--如果不需要在执行编译时启动smart-doc,则将phase注释掉-->
                        <phase>compile</phase>
                        <goals>
                            <!--smart-doc提供了html、openapi、markdown等goal,可按需配置-->
                            <goal>html</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--smart-doc end-->
        </plugins>
    </build>

在放着Controller的模块的/src/main/resources路径下编写smart-doc.json文件。
在这里插入图片描述
以下是我的示例配置,具体配置详解可以看官网。

{
  "serverUrl": "http://127.0.0.1:8088", //服务器地址,非必须。导出postman建议设置成http://{{server}}方便直接在postman直接设置环境变量
  "pathPrefix": "", //设置path前缀,非必须。如配置Servlet ContextPath 。@since 2.2.3
  "isStrict": false, //是否开启严格模式
  "allInOne": true,  //是否将文档合并到一个文件中,一般推荐为true
  "outPath": "src/main/resources/static/doc", //指定文档的输出路径
  "coverOld": true,  //是否覆盖旧的文件,主要用于mardown文件覆盖
  "createDebugPage": true,//@since 2.0.0 smart-doc支持创建可以测试的html页面,仅在AllInOne模式中起作用。
  "packageFilters": "com.xxx.boot.controller.auth.AuthDeptController",//controller包过滤,多个包用英文逗号隔开,2.2.2开始需要采用正则com.test.controller.*
  "md5EncryptedHtmlName": false,//只有每个controller生成一个html文件是才使用
  "style":"atelier-cave-light", //基于highlight.js的代码高设置,可选值很多可查看码云wiki,喜欢配色统一简洁的同学可以不设置
  "projectName": "test-system",//配置自己的项目名称
  "framework": "spring",//smart-doc默认支持spring和dubbo框架的文档,使用默认框架不用配置,当前支持spring、dubbo、JAX-RS(待完善)
  "skipTransientField": true,//目前未实现
  "sortByTitle":false,//接口标题排序,默认为false,@since 1.8.7版本开始
  "showAuthor":true,//是否显示接口作者名称,默认是true,不想显示可关闭
  "requestFieldToUnderline":false,//自动将驼峰入参字段在文档中转为下划线格式,//@since 1.8.7版本开始
  "responseFieldToUnderline":false,//自动将驼峰入参字段在文档中转为下划线格式,//@since 1.8.7版本开始
  "inlineEnum":true,//设置为true会将枚举详情展示到参数表中,默认关闭,//@since 1.8.8版本开始
  "recursionLimit":7,//设置允许递归执行的次数用于避免一些对象解析卡主,默认是7,正常为3次以内,//@since 1.8.8版本开始
  "allInOneDocFileName":"test-system.html",//自定义设置输出文档名称, @since 1.9.0
  "requestExample":"true",//是否将请求示例展示在文档中,默认true,@since 1.9.0
  "responseExample":"true",//是否将响应示例展示在文档中,默认为true,@since 1.9.0
  "displayActualType":true,//配置true会在注释栏自动显示泛型的真实类型短类名,@since 1.9.6
  "revisionLogs": [{ //文档变更记录,非必须
    "version": "1.0", //文档版本号
    "revisionTime": "2021-01-19 10:30", //文档修订时间
    "status": "update", //变更操作状态,一般为:创建、更新等
    "author": "Gangbb", //文档变更作者
    "remarks": "desc" //变更描述
  }],
  "requestHeaders": [
    { //设置请求头,没有需求可以不设置
      "name": "AUTH-TOKEN",//请求头名称
      "type": "string",//请求头类型
      "desc": "请求token,通过登录接口获取",//请求头描述信息
      "value":"token请求头的值",//不设置默认null
      "required": true
//      "pathPatterns": "/auth/**,/system/**",//
//      "excludePathPatterns":"/common/**"//
    }
  ],
  "responseBodyAdvice":{ //自smart-doc 1.9.8起,非必须项,ResponseBodyAdvice统一返回设置(不要随便配置根据项目的技术来配置),可用ignoreResponseBodyAdvice tag来忽略
    "className":"com.luqiao.cloud.security.luqiaointernal.core.ApiResult" //通用响应体
  }
}

3.3 生成文档

根目录下使用插件
在这里插入图片描述
或者使用命令:

//生成html
mvn -Dfile.encoding=UTF-8 smart-doc:html
//生成markdown
mvn -Dfile.encoding=UTF-8 smart-doc:markdown
//生成adoc
mvn -Dfile.encoding=UTF-8 smart-doc:adoc
//生成postman json数据
mvn -Dfile.encoding=UTF-8 smart-doc:postman
// 生成 Open Api 3.0+,Since smart-doc-maven-plugin 1.1.5
mvn -Dfile.encoding=UTF-8 smart-doc:openapi

结果:

在这里插入图片描述

它自带生成的文档已经很不错了,也能支持调试,我下面再用Apifox是为了管理所有项目的接口,接口权限等等。

3.4 接口导入Apifox

在这里插入图片描述
在这里插入图片描述
接口已经导入了:
在这里插入图片描述
可以进行管理了。

4. 总结

本文只介绍了smart-docApifox最基本的使用截图,详细体验可以自己用用看,它们官网都介绍得很全面。总体来说这个组合搭配使用还是不错的。不过有一点不好就是Apifox私有化部署应该是要收费,费用怎么样还没有问过。目前Saas版是免费使用的,还有一个工具ApipostApifox做得差不多,没看过,听说也不错。不贵的话,未来收费可以跟公司提,买一个版本。如果不想用了可以支持导出,到时候再导出到其他的工具也行。
在这里插入图片描述
最后提一句smart-doc 推荐搭配Torna也是不错的,未来Torna再发展几个版本会考虑使用。

Torna官网: http://torna.cn/

SpringBoot六种API请求参数读取方式
兮和的个人博客
05-30 1017
Spring Boot中,读取API请求参数有六种主要方式:@RequestParam从URL查询参数读取,@PathVariable从URL路径提取变量,@MatrixVariable读取URL矩阵参数,@RequestBody读取请求体(如JSON/XML数据),@RequestHeader读取请求头,以及@CookieValue读取Cookie值。此外,还可以通过直接在方法参数中写入请求参数、封装bean接收参数或使用HttpServletRequest对象来获取。
Apifox】测试工具自动编写接口文档
最新发布
YLF123456789000的博客
07-01 445
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
springboot快速集成apifox
weixin_43538316的博客
05-22 1889
以上就是在 Spring Boot 中快速集成 APIFox 的步骤。在需要使用 APIFox 的地方注入。2、配置 APIFox。3、使用 APIFox
Springboot集成swagger,使用apifox浏览
学无止境,站在巨人的肩上,实现弯道超车
09-19 3563
这就是swagger根据你controller里面的接口的签名解析出来的(前提是你项目中创建了controller,空项目肯定是看不到的)。我这个data是能点开的,能看到里面具体的属性,如果使用统一返回值,这个data是一个固定类型object,这里是点不开的,那么每个接口的返回值都是一样的。注意,依赖里面排除了swagger-ui,swagger-ui界面实在太难用了,很多年前的东西了,这里我推荐用apifoxapifox提供了简洁漂亮的ui界面,你可以下载apifox软件,也有网页版本。
Springboot集成swagger,使用apifox导入接口
m0_62506538的博客
06-24 1563
一、引入swagger依赖。已经创建好了基本的包目录。
SpringBootApiFox整合快速上手
市民景先生
02-25 1915
前置:IDEA版本IntelliJ IDEA2023.2.4,Apifox2.5.6安装插件:Apifox Helper1.2.1。
springboot集成springdoc接口文档生成 配合apifox使用
shenbururen的博客
07-18 5436
如果使用其他的ui工具,就可以将swagger-ui依赖去掉,减少包体积,这个ui包有3M多,还是挺大的,而且也很难用。springdoc.api-docs.enabled=true//默认为true,配置为false则是停用。可以将默认ui替换为其他的ui工具进行使用,推荐apifox(免费)。api-docs默认地址http//ipport/v3/api-docs。swagger-ui是根据api-docs生成的可视化的页面。所以api-docs才是根本,ui可以随意选择自己喜欢的。......
SpringBoot集成smart-doc和torna接口文档的自动创建与文档推送
08-03
smart-doc和torna接口文档的自动创建与文档推送,解决了后端维护接口文档的困扰,没有swagger代码倾入性强,简单易上手,替代postman支持在线调试接口,超简单的集成Demo,下载即可用
javaapi源码-smart-doc:Smart-docJavaRestfulapi文档生成工具。Smart-doc基于接口源代码分析来生
05-19
RPC接口文档生成的工具。 Smart-doc基于接口源代码分析来生成接口文档,并实现零注释入侵。 您只需在开发时编写Javadoc注释,智能文档即可帮助您生成Markdown或HTML5文档。 smart-doc不需要像Swagger这样的代码中...
java写qq源码-smart-doc-maven-plugin:用于smart-docapi文档生成工具的maven插件
06-18
smart-doc+形成业界领先的文档生成管理解决方案,使用smart-doc完成Java源代码分析并提取注解生成API文档无侵入,自动推送文档至Torna企业级接口文档管理平台. 入门 添加插件 <groupId>...
115-springboot-demo-smart-doc.rar
03-07
SpringBoot接口 - 如何生成接口文档之集成Smart-Doc上文我们看到可以通过Swagger系列可以快速生成API文档, 但是这种API文档生成是需要在接口上添加注解等,这表明这是一种侵入式方式; 那么有没有非侵入式方式呢, ...
java项目对接 smart-doc + Torna实现接口文档全流程自动化
weixin_44057407的博客
08-12 1099
1.对接smart-doc 1.1需要生成的模块pom添加插件 <plugin> <groupId>com.github.shalousun</groupId> <artifactId>smart-doc-maven-plugin</artifactId> <version>2.2.4</version> <configuration>
springboot项目接口同步到apifox
weixin_43903166的博客
05-21 700
在类上使用@Tag(name = "flow")注解,在方法上使用@Operation(summary = "testSwagger"),在入参字段上加上@Schema(description = "dispatchId",requiredMode = Schema.RequiredMode.REQUIRED)注解。在开发接口时,我们希望可以把我们开发的接口直接同步到apifox上,这样团队中的成员就可以直接查看,触发接口。在这里选择要执行的环境就可以了,比如本地环境,开发环境,测试环境等。
spring boot / cloud (三) 集成springfox-swagger2构建在线API文档
chengrensi8974的博客
05-26 101
spring boot / cloud (三) 集成springfox-swagger2构建在线API文档 ##前言 ###不能同步更新API文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与周边系统对接联调的效率.但前提条件是,服务和API文档必须是同步更新的,如果不能保...
ApiFox---解放双手!无需注解快速生成API文档,跟SpringBoot绝配!
EndTheme_Xin的博客
08-23 3712
做技术管理的童鞋,往往会陷入这样一种困境:疲于奔命,到处救火填坑,沟通推进,却挤不出时间思考对团队和项目来说真正重要的事情。如果在你的项目组里,这样的状况反复发生,那么有必要考虑一下这个团队研发效能工具了。这款工具叫ApifoxApifox=Swagger+Postman+Mock.js+Jmeter,是一个集接口设计,文档管理,接口调试,接口mock,自动化于一体的研发效能工具。
SpringBoot实现前后端的第一次联系 SpringBoot简单参数传递 ApifoxSpringBoot实现前后端简单参数传递
当年月明的博客
07-10 1648
简单介绍了前后端链接的具体技术生态,以及实现的具体过程。以简单参数的传递为例,介绍了HttpServletRequest对象实现的原始方法,以及更简单的SpringBoot方法。
5分钟集成实现SpringBoot自动生成API接口文档(上篇)
一行Java的博客
11-16 4758
当你问10个开发人员想不想写开发文档,可能有11个人会告诉你,不想写;那有没有方式可以不写接口文档,能自动生成呢?当然是有的,业界比较主流的是使用丝袜哥(swagger);但是个人使用过程中,觉得它对代码的侵入性有点强,虽然减轻了文档撰写的工作量,但是带来了一些编码的负担,同时和整个业务功能耦合的比较严重; 下面推荐一个非侵入的API生成工具:apigcc : https://github.com/apigcc/apigcc 使用起来也非常的简单,而且对代码几乎零侵入。 话不多说,代码走着。。。 测试源码.
smart-doc初体验-springboot生成自动文档
热门推荐
qq_31564573的博客
05-06 1万+
smart-doc 使用体验
apifox导出接口顺序错误
06-08
如果在使用APIFox导出接口时发现顺序错误,可能是由于APIFox导出的接口顺序是按照接口定义的顺序导出的。如果您需要按照特定的顺序导出接口,可以尝试在APIFox中按照您需要的顺序重新排列接口,然后再导出。 另外,如果您使用的是Swagger导出的接口信息,可以在Swagger编辑器中重新排列接口,然后再将Swagger文件导入APIFox中。这样可以确保导出的接口顺序与您期望的顺序一致。 如果以上方法无法解决问题,建议您联系APIFox的客服支持团队,他们可以为您提供更具体的帮助和解决方案。
写文章

热门文章

  • SpringBoot系列-- SpringBoot之Mybatis Generator生成器使用(多种方式) 13867
  • Spring Boot中异步调用的正确使用姿势(详解) 13430
  • uniapp 使用UI组件库 (小白) 11781
  • Mysql清理数据库中的重复脏数据 11459
  • 坑:Redisexception; nested exception isio.lettuce.core.RedisException:java.io.IOException 11254

分类专栏

  • java实战开发 84篇
  • Java多线程 1篇
  • SpringBoot 20篇
  • 微服务体系 8篇
  • 从零搭建若依管理系统 14篇
  • 数据库 27篇
  • mysql 8篇
  • Mybatis / Mybatis-Plus 19篇
  • Redis 7篇
  • 前端 4篇
  • 移动端/小程序 4篇
  • python学习 4篇
  • 设计模式 23篇
  • Jenkins 1篇
  • docker学习笔记 5篇
  • minio 1篇
  • 面试题总结 6篇
  • 版本管理 1篇
  • 干货 3篇

最新评论

  • SpringBoot系列-- SpringBoot中使用lombok简化开发

    天蓝999: 给力!我已入职Java,之前在自学精灵网站学的项目实战

  • Spring Cloud小项目

    天蓝999: 可以的,我看的另一个SpringCloud项目视频,从零开发,五天学会了SpringCloud项目实战:https://knife.blog.csdn.net/article/details/134659054

  • 从零搭建若依(Ruoyi-Vue)管理系统(1)--概述

    China_YC: 真肝啊,这全部流程走下来花了多少时间

  • SpringBoot系列-- SpringBoot整合SLF4j+log4j2+aop记录web请求

    起个名字好麻烦啊: 而且你这个不是跟springboot整合了吗?配置文件yaml里面不扫描log4j2.xml的话,是不会按照配置文件来输出日志的

  • SpringBoot系列-- SpringBoot整合SLF4j+log4j2+aop记录web请求

    起个名字好麻烦啊: 大哥,这里的spring-boot-srarter-web里面没有spring-boot-startrt-logging这个包的,这个是test包里面的,你排除错位置了,会导致运行不了的

大家在看

  • c++:类和对象(中)
  • 正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器) 884
  • 【计算机毕设-大数据方向】基于大数据的在线车辆数据分析可视化系统的设计与实现
  • 【Linux 20】线程控制 1505
  • 基于django+vue基于B_S的驾校在线学习考试系统【开题报告+程序+论文】-计算机毕设

最新文章

  • 一文搞懂Mysql回表,如何解决回表
  • Java判断对象列表中对象某属性是否都相同
  • java比较相同/不同对象中的指定字段是否相同
2023年6篇
2022年27篇
2021年121篇
2020年11篇
2019年2篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

天下网标王乐至网站建设优化正规的seo网站优化费用榆次网站优化方式方法南通市网站关键词优化哪里有卖百度网站优化方案网站建设优化费用网站站外优化具体做哪些滕州网站如何做优化北京正规网站搜索优化推广徐州网站优化经验顺时科技网站优化铁岭优化网站关键词衡水seo网站优化费用安丘网站优化有哪些河北搜才网站内优化技术服务网站优化合同外贸网站的优化方法三台县网站seo优化排名安庆外贸网站优化网站链接优化的建议外贸仿牌网站优化哪家好怎样优化神马网站关键词自然昌吉网站优化服务石岩网站排名优化公司阿克苏网站seo优化哪家好教育网站优化效果企业网站排名优化商丘网站排名优化哪家售后好菏泽外贸网站优化公司线尚网络网站优化的策略有哪些香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化