美文网首页程序员
基于springboot后端开发实录二:介绍

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

作者: 杨拔纲 | 来源:发表于2019-03-18 11:12 被阅读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,以上就是本章的全部内容,如有未明事项请留言。

    相关文章

      网友评论

        本文标题:基于springboot后端开发实录二:介绍

        本文链接:https://www.haomeiwen.com/subject/gbnmmqtx.html