【Spring Boot 项目创建】003-启动日志优化、开发 Hello World 接口、使用 HTTP Client 测试接口

4、启动日志优化

4.1 启动日志

第一步: 在 resource 目录下添加 logback-spring.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 修改一下路径-->
    <property name="PATH" value="./log"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>-->
            <Pattern>%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>
        </encoder>
    </appender>

    <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${PATH}/trace.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
        </layout>
    </appender>

    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${PATH}/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
        </layout>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--错误日志记录到文件-->
    <root level="ERROR">
        <appender-ref ref="ERROR_FILE" />
    </root>

    <!--记录到文件-->
    <root level="TRACE">
        <appender-ref ref="TRACE_FILE" />
    </root>

    <!--控制台打印-->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
第二步:启动项目,查看效果

image-20210627122823775

4.2 忽略 log 目录

第一步:在 .gitignore 中配置忽略

image-20210627123140939

第二步:查看 commit

image-20210627123225769

4.3 修改启动文案

第一步:修改启动类 WikiApplication

可以使用 IDEA 配置成这样的模板,但是别忘了在配置文件中显式配置端口号!

package com.zibo.wiki;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;

@SpringBootApplication
public class WikiApplication {

    // 日志
    private static final Logger LOG = LoggerFactory.getLogger(WikiApplication.class);

    public static void main(String[] args) {
        // 修改启动文案
        SpringApplication app = new SpringApplication(WikiApplication.class);
        Environment env = app.run(args).getEnvironment();
        LOG.info("启动成功");
        LOG.info("地址: \thttp://127.0.0.1:{}", env.getProperty("server.port"));
    }

}

第二步:修改 application.properties 配置文件
# 启动文案需要从这里获取端口号,即使默认是8080,也需要显式写出来才能拿到!
server.port=8080

第三步:启动项目

image-20210627125324947

5、开发 Hello World 接口

第一步:创建一个 controller 包

第二步:创建 HelloController 类

package com.zibo.wiki.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("hello")
    public String hello(){
        return "Hello World!";
    }

}

第三步:访问 http://127.0.0.1:8080/hello 查看效果(省略)

6、使用 HTTP Client 测试接口

6.1 使用 HTTP Client 测试接口

使用 IDEA 自带的 HTTP Client 插件!

第一步:在项目根目录下创建 http 目录,并创建文件 test.http

名字可以任意取,后缀名必须是 .http

image-20210627151314155

第二步:test.http 文件内容
# 快捷键:gtr
GET http://localhost:8080/hello
Accept: application/json

###
第三步:测试 hello 接口

image-20210627152405050

第四步:编写一个 post 带参数的接口
package com.zibo.wiki.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("hello")
    public String hello(){
        return "Hello World!";
    }

    @PostMapping("/helloPost")
    public String helloPost(String name){
        return "Hello World! " + name;
    }
}

第四步:在 test.http 编写测试代码
# 快捷键:gtr
GET http://localhost:8080/hello
Accept: application/json

###

# 快捷键:ptrp
POST http://localhost:8080/helloPost
Content-Type: application/x-www-form-urlencoded

name=zibo

###
第五步:测试 post 接口

image-20210627152459184

6.2 结果验证

第一步:修改 test.http
# 快捷键:gtr
GET http://localhost:8080/hello
# 我们目前返回的是字符串而不是json,会报错,所以暂将其注释掉
# Accept: application/json

# 这个类似单元测试
# test-hello 是名字
# function() 里面类似可以写一些日志
> {%
client.test("test-hello", function() {
  client.log("测试/hello接口");
  client.log(response.body);
  client.log(JSON.stringify(response.body)); // 虽然idea没有提示JSON,但是可以用
  client.assert(response.status === 200, "返回码不是200");
  client.assert(response.body === "Hello World", "结果验证失败");
});
%}
###

# 快捷键:ptrp
POST http://localhost:8080/helloPost
Content-Type: application/x-www-form-urlencoded

name=zibo

###
第二步:修改 hello 接口返回的内容
@RequestMapping("hello")
public String hello(){
    return "Hello World!00000000";
}
第三步:运行测试

image-20210627153150145

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值