谷粒学院(三)讲师管理模块(后端) | swagger | 统一日志 | 统一返回结果(一)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 谷粒学院(三)讲师管理模块(后端) | swagger | 统一日志 | 统一返回结果

一、讲师查询功能

1、编写查询 controller 代码内容

@RestController
@RequestMapping("/eduservice/teacher")
public class EduTeacherController {
    @Autowired
    private EduTeacherService eduTeacherService;
    // 查询讲师列表所有数据
    // 使用restful风格
    @GetMapping("findAll")
    public List<EduTeacher> findAll(){
        List<EduTeacher> list = eduTeacherService.list(null);
        return list;
    }  
}

2、创建配置类,配置mapper扫描和其他

@Configuration
@MapperScan("com.kuang.eduservice.mapper")
public class EduConfig {
}


3、配置SQL执行性能分析插件

/**
     * SQL 执行性能分析插件
     * 开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长
     */
@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启
public PerformanceInterceptor performanceInterceptor() {
    PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
    performanceInterceptor.setMaxTime(1000);//ms,超过此处设置的ms则sql不执行
    performanceInterceptor.setFormat(true);
    return performanceInterceptor;
}

4、创建主启动类

@SpringBootApplication
public class EduApplication {
    public static void main(String[] args) {
        SpringApplication.run(EduApplication.class, args);
    }
}

5、测试启动

访问:http://localhost:8001/eduservice/teacher/findAll

559759ee89f1eb364fc3f647ee1e54eb.png

6.统一返回的json时间格式

默认情况下json时间格式带有时区,并且是世界标准时间,和我们的时间差八个小时

9cb379e1e735e2a6a3996e8008946acf.png

在application.yml中设置:

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

4b1ff15991c9b34b87e8d22edf727578.png

二、讲师逻辑删除功能

1、配置逻辑删除插件

//逻辑删除组件
@Bean
public ISqlInjector sqlInjector(){
   return new LogicSqlInjector();
}

2、逻辑删除属性上面添加注解

@TableLogic
private Boolean isDeleted;

3、编写Controller删除方法

//逻辑删除讲师方法
@DeleteMapping("removeById/{id}")
public boolean removeById(@PathVariable String id){
    boolean flag = eduTeacherService.removeById(id);
    return flag;
}

4、如何测试

借助一些工具进行测试

  • swagger测试(重点):生成在线的接口文档,方便接口测试。
  • postman(了解)

三、配置Swagger2

1、创建common模块—在guli_parent下创建common

2、引入相关依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>provided </scope>
    </dependency>
    <!--mybatis-plus-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <scope>provided </scope>
    </dependency>
    <!--lombok用来简化实体类:需要安装lombok插件-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided </scope>
    </dependency>
    <!--swagger-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <scope>provided </scope>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <scope>provided </scope>
    </dependency>
    <!-- redis -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <!-- spring2.X集成redis所需common-pool2
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.6.0</version>
        </dependency>-->
</dependencies>

3、创建swagger的配置类

在common下面创建子模块service_base, 并在该模块创建swagger的配置类

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket webApiConfig(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi")
                .apiInfo(webApiInfo())
                .select()
                .paths(Predicates.not(PathSelectors.regex("/admin/.*")))
                .paths(Predicates.not(PathSelectors.regex("/error.*")))
                .build();
    }
    private ApiInfo webApiInfo(){
        return new ApiInfoBuilder()
                .title("网站-课程中心API文档")
                .description("本文档描述了课程中心微服务接口定义")
                .version("1.0")
                .contact(new Contact("lxy", "www.baidu.com", "2422737092@qq.com"))
                .build();
    }
}

4、Swagger2具体使用


在service_edu引入service_base依赖

最后在service_edu启动类上添加注解,设置包扫描规则


743c1790ea5e3925e37041934a0003c3.png


访问测试: http://localhost:8001/swagger-ui.html


4891ce1d92132bcdffb46e66bda9fbdc.png


5.定义接口说明和参数说明


定义在类上:@Api

定义在方法上:@ApiOperation

定义在参数上:@ApiParam


@Api(description = "讲师管理")
@RestController
@RequestMapping("/eduservice/teacher")
public class EduTeacherController {
    @Autowired
    private EduTeacherService eduTeacherService;
    // 查询讲师列表所有数据
    // 使用restful风格
    @ApiOperation(value = "所有讲师列表")
    @GetMapping("findAll")
    public List<EduTeacher> findAll(){
        List<EduTeacher> list = eduTeacherService.list(null);
        return list;
    }
    //逻辑删除讲师方法
    @ApiOperation(value = "逻辑删除讲师")
    @DeleteMapping("{id}")
    public boolean removeById(
            @ApiParam(name = "id", value = "讲师ID",required = true)
            @PathVariable String id){
        boolean flag = eduTeacherService.removeById(id);
        return flag;
    }
}


0fd765dbf888f718795ebbbacedecc6a.png


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
前端开发 应用服务中间件 API
|
3月前
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
70 3
Golang语言之Prometheus的日志模块使用案例
|
3月前
|
Shell Python
salt自定义模块内使用日志例子
salt自定义模块内使用日志例子
logging 日志 模块
logging 日志 模块
|
4月前
|
Go 开发者
【应用服务 App Service】App Service发生错误请求时,如何查看IIS Freb日志,从中得知错误所发生的模块,请求中所携带的Header信息
【应用服务 App Service】App Service发生错误请求时,如何查看IIS Freb日志,从中得知错误所发生的模块,请求中所携带的Header信息
|
4月前
|
数据挖掘 语音技术
3D-Speaker说话人任务的开源项目问题之语义说话人信息模块在说话人日志系统中的问题如何解决
3D-Speaker说话人任务的开源项目问题之语义说话人信息模块在说话人日志系统中的问题如何解决
|
4月前
|
存储 监控 Java
|
4月前
|
存储 安全 Python
[python]使用标准库logging实现多进程安全的日志模块
[python]使用标准库logging实现多进程安全的日志模块
|
5月前
|
存储 算法 开发工具
Etcd/Raft 原理问题之Etcd-Raft是什么
Etcd/Raft 原理问题之Etcd-Raft是什么
|
4月前
|
监控 Java API
如何将不同业务模块产生的日志 分多文件记录
如何将不同业务模块产生的日志 分多文件记录
75 0