使用SpringBoot开发Restful服务实现增删改查功能
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。这篇文章主要介绍了基于SpringBoot开发一个Restful服务,实现增删改查功能,需要的朋友可以参考下
技术:
springboot、restful接口风格
业务:
springboot快速构建spring项目开发与部署。
restful风格让API 设计更规范,用于 Web 数据接口的设计,语义更明确
请求URL对应着请求资源的地址
操作资源的动词通常就是五种 HTTP 方法,对应 CRUD 操作。
restful风格的API主要涉及如下设计:
URL设计:API 的 URL,是 五种 HTTP 方法作用的对象。它应该是名词 .
实际项目中使用动宾短语较多:例如 /getAllCars
状态码设计:包括 HTTP 状态码和数据两部分
HTTP 状态码就是一个三位数,分成五个类别。
1xx
:相关信息2xx
:操作成功3xx
:重定向4xx
:客户端错误5xx
:服务器错误这五大类总共包含100多种状态码,覆盖了绝大部分可能遇到的情况。每一种状态码都有标准的(或者约定的)解释,客户端只需查看状态码,就可以判断出发生了什么情况,所以服务器应该返回尽可能精确的状态码。
数据传输格式
请求与响应都为JSON格式
服务器响应时 API 返回的数据格式,不应该是纯文本,而应该是一个 JSON 对象,因为这样才能返回标准的结构化数据。所以,服务器响应的 HTTP 头的
Content-Type
属性要设为application/json
。客户端请求时,也要明确告诉服务器,可以接受 JSON 格式,即请求的 HTTP 头的
ACCEPT
属性也要设成application/json
。
整理下springboot项目restful接口风格代码的编写流程。
一、开发准备
- 1.1 数据库和表
- 1.2 maven相关依赖
二、工程说明
- 2.1工程结构图:
- 2.2 自定义配置文件
三、代码编写
- 3.1 Pojo类User的编写
- 3.2 Dao层编写
- 3.3 Service 业务逻辑层
- 3.4 Controller 控制层
- 3.5 Application 主程序
四、代码测试
一、开发准备
在开发程序之前,应先做好一下准备
- 1.1 数据库和表
CREATE DATABASE `spring-boot-case`;
USE `spring-boot-case`;
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(10) DEFAULT NULL COMMENT '姓名',
`age` int(2) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
-
1.2 maven相关依赖
springBoot最核心的jar
spring-boot-starter :核心模块,包括自动配置支持、日志和YAML;
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-boot-restful-crud</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<mybatis-spring-boot>1.3.2</mybatis-spring-boot>
<mysql-connector>8.0.16</mysql-connector>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring Boot Mybatis 依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot}</version>
</dependency>
<!-- MySQL 连接驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector}</version><