基于SpringBoot的Helloworld与四则运算服务
基本要求
- 理解掌握SpringBoot结合Maven的工程搭建流程
- 理解掌握SpringBoot如何应用于Web领域
- 理解具备基于SpringBoot设计编写简单接口的能力
实验过程
导入SpringBoot工程
将下面Springboot项目解压并导入IDE,实现项目初始化:
使用IntelliJ IDEA导入SpringBoot工程
在欢迎屏幕中点击“Open”,或选择“File | Open”,在弹出的“Open File or Project”窗口中找到 Spring Boot 工程目录:
IntelliJ IDEA 会自动解析 Maven 项目、下载相关依赖,解析完成后,使用快捷键
Shift+F10即可运行空白项目:
当出现与如图类似的输出,则表示项目导入成功。
使用 Visual Studio Code 导入 Spring Boot 工程
要在 Visual Studio Code 中编译、调试 Spring Boot 工程,需要安装 Java 插件扩展包“Extension Pack for Java”,该插件扩展包包含对 Java 语言、Java 调试、Maven 等的支持。要安装该插件扩展包,需先转到 “Extensions”窗口(使用快捷键
Ctrl+Shift+X),键入“java”过滤插件列表,找到对应的插件包并选择安装:使用快捷键
Ctrl+K Ctrl+O打开对应的项目文件夹,Visual Studio Code 将自动导入、解析项目。解析完成后,进入src/main/java/tech/synx/arithmetic/ArithmeticApplication.java文件中,此时main()函数上方将出现“Run | Debug”按钮,点击“Run”按钮即可运行空白项目:
当出现与如图类似的输出,则表示项目导入成功。
接口定义与实现
在 Spring 模型中,Controller 层用于拦截传入请求,将请求的数据转换成项目内部的数据结构,并将数据发送给 Model 层进行进一步处理。在 Model 层处理完成后,Controller 层将结果回送。这些操作在 Spring Boot 中实现了自动配置,简化了开发流程,接口的实现仅需使用基于注解的 Controller 类即可,Spring Boot 默认使用 Jackson 包实现 JSON 与 Java 对象之间的自动转换。
Spring Boot 常使用按层的组织,即将所有 Controller 类放在 controller 包下、所有 Service 类放在 service 包下,所有实体类放在 domain / model 包下等。本实验的计算操作较为简单,因此无需进行 Service 类的设计。
接口规范
求和接口
求和接口,返回两整数之和
URI: POST /v1/arithmetic/operation/add
请求头:Content-type:application/json
请求参数:
op1: 第一个操作数;int;必填
op2: 第二个操作数;int;必填
请求示例:
{
"op1": 3,
"op2": 4
}
响应参数:
status: 状态;1表示成功,0表示调用失败
data: 结果;object
result: 计算结果;int
响应示例:
{
"status": 1,
"data": {
"result": 7
}
}
求差接口
返回两数之差
URI: POST /v1/arithmetic/operation/subtract
请求头:Content-type:application/json
请求参数:
op1: 第一个操作数;int;必填
op2: 第二个操作数;int;必填
请求示例:
{
"op1": 3,
"op2": 6
}
响应参数:
status: 状态;1表示成功,0表示调用失败
data: 结果;object
result: 计算结果;int
响应示例:
{
"status": 1,
"data": {
"result": -3
}
}
求积接口
返回两数之积
URI: POST /v1/arithmetic/operation/multiply
请求头:Content-type:application/json
请求参数:
op1: 第一个操作数;int;必填
op2: 第二个操作数;int;必填
请求示例:
{
"op1": 3,
"op2": 4
}
响应参数:
status: 状态;1表示成功,0表示调用失败
data: 结果;object
result: 计算结果;int
响应示例:
{
"status": 1,
"data": {
"result": 12
}
}
求商接口
返回两数的商和余数。当除数为0,返回 JSON 中 status 字段设置为0
URI: POST /v1/arithmetic/operation/divide
请求头:Content-type:application/json
请求参数:
op1: 第一个操作数;int;必填
op2: 第二个操作数;int;必填
请求示例:
{
"op1": 3,
"op2": 4
}
响应参数:
status: 状态;1表示成功,0表示调用失败
data: 结果;object
remainder: 余数;int
quotient: 商;int
响应示例:
{
"status": 1,
"data": {
"remainder": 3,
"quotient": 0
}
}
服务器程序测评要求
日志输出要求
日志输出采用 Spring Boot 默认的输出模式:
- 日期与时间
- 日志等级,包括
ERROR,WARN,INFO,DEBUG与TRACE - 进程 ID
---字符串分隔符- 方括号包围的线程名
- 日志器名,默认是类名
- 实际日志信息
所有用户日志均以 INFO 等级输出
服务器接收客户端请求
服务器程序中对应处理函数在收到客户端的 HTTP 请求后必须在日志文件中输出客户端请求的数据。
格式为:[srv] [req] (<HTTP_method> <endpoint>) <json_string>
例如:[srv] [req] (POST /divide) {"op1":34,"op2":12}
服务器回送响应
处理函数在处理用户请求后向客户端回送响应,在回送消息前在日志文件中输出向客户端发送的数据。
格式为:[srv] [resp] (<HTTP_method> <endpoint>) <json_string>
例如:[srv] [req] (POST /divide) {"status":1,"data":{"quotient":2,"remainder":10}}
输入输出
服务器端输入
服务器端输出
参考资料
- Restful 接口设计规范:http://www.restfulapi.nl/