谷粒学院(三)讲师管理模块(后端) | 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月前
|
负载均衡
|
3月前
|
运维 监控 关系型数据库
百度搜索:蓝易云【MYSQL四种管理日志详细介绍】
这四种管理日志对于MySQL服务器的性能监控、故障排查以及主从复制等方面都非常重要。在使用这些日志时,应根据具体需求来选择开启和配置,并定期清理和维护日志文件,以免占用过多磁盘空间。
73 0
|
9天前
|
监控 Java API
如何将不同业务模块产生的日志 分多文件记录
如何将不同业务模块产生的日志 分多文件记录
10 0
|
7天前
|
存储 监控 Java
|
12天前
|
存储 安全 Python
[python]使用标准库logging实现多进程安全的日志模块
[python]使用标准库logging实现多进程安全的日志模块
|
27天前
|
存储 算法 开发工具
Etcd/Raft 原理问题之Etcd-Raft是什么
Etcd/Raft 原理问题之Etcd-Raft是什么
|
12天前
|
JSON 安全 Go
[golang]使用logrus自定义日志模块
[golang]使用logrus自定义日志模块
|
27天前
|
存储 弹性计算 运维
可观测性体系问题之ECS管控对其所有日志的管理如何解决
可观测性体系问题之ECS管控对其所有日志的管理如何解决
26 0
|
2月前
Liunx怎么安装spdlog(这是用来管理日志部分)
Liunx怎么安装spdlog(这是用来管理日志部分)
35 7
|
1月前
|
Unix Python
Python代码示例:使用`syslog`模块进行日志记录
Python代码示例:使用`syslog`模块进行日志记录

热门文章

最新文章