0
点赞
收藏
分享

微信扫一扫

Java 神技:破解经纬度两点距离的终极密码

small_Sun 2024-11-12 阅读 7

        在SpringBoot中可以集成代码插件自动生成接口文档,而且生成的文档很漂亮,除了接口功能介绍、传入参数、响应参数,还具体类似postman的功能,可调用接口进行测试,另外还可以下单WORD版、.md,html格式的文档。下面我们先看下接口文档的展示效果:

下面是实体类参数说明界面:

下面是文档下载界面:

下载的MD文件:

html界面:

类似PostMan的 在线调试界面:

提供JS和TS的调用示例:

在线接口文档生成插件可以帮助我们生成可交付的接口文档,大大节省了项目交付的编写开发文档时间。接下来我介绍下如何在SpringBoot中整合在线接口文档插件。

    这个接口文档插件交knife4j,是一个集Swagger2和OpenAPI3为一体的增强解决方案。首先我们在openjweb-cloud的主工程中增加knife4j的依赖、lombok依赖(这个使用@Data注解,在实体类中使用),阿里的fastjson(测试接口返回的用JSON结构不能在文档中生成响应参数的说明):

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

<!--    lombok    -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.2</version>
</dependency>


<!--   knife4j     -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <!--<artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.4</version>-->
    <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
    <version>4.4.0</version>

</dependency>

然后在openjweb-sys子工程的org.openjweb.config下增加一个Swagger2配置类,代码如下:

@Configuration
//@EnableSwagger2
@EnableSwagger2WebMvc
//@EnableKnife4j
public class Swagger2Config {
    @Bean(value = "dockerBean")
    public Docket dockerBean() {
        //指定使用Swagger2规范
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder().title("OpenJWeb低代码平台开发文档")

                        //描述字段支持Markdown语法
                        .description("# OpenJWeb低代码开发平台WXID: openjweb") //产品简介
                        .termsOfServiceUrl("https://github.com/openjweb/cloud/tree/master")//API服务条款
                        .contact("29803446@qq..com")//联系人
                        .version("1.0")//版本号
                        .build())
                //分组名称
                .groupName("OpenJWeb低代码平台")//左上角搜索框---分组名称
                .select()
                //这里指定Controller扫描包路径
                .apis(RequestHandlerSelectors.basePackage("org.openjweb"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
}

注意每个参数对应首页的显示位置可以看首页的图。这些参数指定了文档标题、项目介绍、服务条款、联系人、版本号等。

接下来创建一个实体类CommUser,因为后面示例接口需要返回一个CommUser类型的返回值,在文档中可自动展示返回值说明,下面在org.openjweb.sys.entity下创建一个CommUser类:

package org.openjweb.sys.entity;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
public class CommUser {
    @ApiModelProperty(value ="登录账号",required = true)
    private String loginId;

    @ApiModelProperty(value ="用户昵称")
    private String username;

    @ApiModelProperty(value ="真实姓名")
    private String realName;

    @ApiModelProperty(value ="用户性别:男M 女F")
    private String userSex;

}

注意每个属性都增加@ApiModelProperty注解,这样文档中可以显示相应的参数说明。

然后我们创建一个Controller类或者API类,在org.openjweb.sys.api下建一个接口类:

@RestController
@RequestMapping("/ucenter")
@Api(tags = "admin-用户管理")
public class CommUserApi {

    @ApiOperation("用户详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "username", value = "用户名称", paramType = "query"),
            @ApiImplicitParam(name = "province", value = "所属省份", paramType = "query")
    })

    @GetMapping("info")

    public CommUser getUserInfo(@RequestParam(value = "username")String username, @RequestParam(value = "province")String province){
    //public CommUser getUserInfo( String username, String province){

        CommUser user = new CommUser();
        user.setUserSex("男");
        user.setUsername(username);
        user.setRealName("王先生");
        user.setLoginId("abao");
        return user;
    }
}

类头部标注此类的接口说明@Api(tags = "admin-用户管理"),这个在文档展示的时候是一个菜单组,然后方法上也增加注解@ApiOperation("用户详情"),这个描述接口的功能,然后@ApiImplicitParams,是接口参数说明,注意接口参数的命名需要和方法参数的(@RequestParam的命名保持一致。

接下来在openjweb-sys子工程的resource目录下建2个文件,一个是application.yml,存放标准配置,一个application-dev.yml是个性化参数配置,application.yml里:

spring:
  profiles:
    active: dev

指定当前使用application-dev.yml

application-dev.yml里指定启动端口:

server:
  port: 8001

配置好以后启动系统管理的应用OpenjwebSysApplication,启动后访问:

http://localhost:8001/ucenter/info?username=2&province=2

接口文档访问地址:

http://localhost:8001/doc.html

显示帮助文档界面:

项目代码见Github

 

举报

相关推荐

0 条评论