程序员

基于springboot后端开发实录二:介绍

2019-03-18  本文已影响0人  杨拔纲

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,以上就是本章的全部内容,如有未明事项请留言。

上一篇下一篇

猜你喜欢

热点阅读