0,前言
前面一章创建了一个工程,运行时输出"Hello, world!"。本章将在此基础上进行修改。目标包括三个方面:容器、协议、标准输出。
1,容器
在上一章中,我们创建工程时添加了web支持,在运行时从idea下方的输出窗口可以看到默认情况下,工程是运行在tomcat容器中的,默认端口是8080。首先我们来修改容器支持:
A,去除默认容器
打开项目根目录下的build.gradle文件,将其中
implementation 'org.springframework.boot:spring-boot-starter-web'
一行进行修改,修改后的样子如下:
implementation ('org.springframework.boot:spring-boot-starter-web') {
excludegroup:'org.springframework.boot',module:'spring-boot-starter-tomcat'
}
B,添加undertow
在build.gradle文件增加一行,引入undertow:
implementation'org.springframework.boot:spring-boot-starter-undertow'
C,刷新依赖
等待自动刷新或者手动刷新,打开左侧External Libraries,确认tomcat己经移除且undertow己添加。修改完成的build.gradle如下所示:
完成后的build.gradle文件2,协议
默认情况下使用http,此处我们将改为https并且启用http2。
A,创建证书
需要的命令如下所示,请按情况修改,如证书名称、别名等。
keytool -genkey -alias ybg -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore server.p12 -validity 36500 -dname "CN=ybg, OU=ybg, o=ybg, L=shenzhen, ST=gd, C=China"
B,导入证书
在工程的resources目录下新建cert目录,将上面生成的证书拷到cert目录下。
证书位置,不一样也没关系,在后面的配置中做相应修改也行。C,增加配置
工程新建时,在resources目录中有一个application.properties文件,将此文件改名为application.yml,在接下来的配置中将使用yaml格式。在上面的截图中可以看到文件己经准备好了。
打开application.yml,加入以下配置内容:
application.yml配置内容port项将默认端口改为了8000,证书的参数与前面生成时的参数一致,最后一项是启用http2,启用http2的好处可以自行搜索互联网相关资料。以上步骤完成后可以再次运行项目:
注意红线部分,容器己变更为undertow,端口为8000,启用https。D,测试
打开postman,注意地址需要手工输入https。
注意协议己经变更为https由于证书是自己生成的,无法通过postman的ssl验证,需要将此验证选项关闭。打开postman设置,找到如下图红线所示的项进行关闭:
关闭ssl证书验证3,标准输出
输出单一的类对于前端的解析来说是不够的,无法判断是否成功,如果失败又是什么原因的失败。我习惯于输出一个统一的格式,包括4个属性值:是否成功、失败消息、失败代码、数据。如果成功,则失败消息为空字符串,失败代码则为0,数据为需要返回的业务数据;如果失败,则失则消息为失败原因,失败代码则代表业务失败编号,数据则为空字符串。打开UserInfoController.groovy,对原来的hello方法进行修改。首先定义一个map用于返回数据。
def map = [:]
map.isSuccess =true
map.message =""
map.errorCode ="0"
map.data = 返回的业务数据
此处需要特别注意,"Hello, $name!"是GString,不是String,虽然在大多数情况可以忽略。在此处需要显示的转换后再赋值。
map.data = "Hello, $name!".toString()
完整代码如下:
完整代码,注意不要忘了显式转换。运行项目,打开postman再次测试,结果如下:
加了toString()的测试结果如果前面没有加toString(),而直接赋值,即
map.data ="Hello, $name!",则结果如下:
未加toString()4,以上就是本章的全部内容,如有未明事项请留言。
网友评论