一、SpringBoot版本区别

SpringBoot 2基于Spring5和JDK8,而Spring 1.x则用的是低版本

二、REST规范

1、协议

API与用户的通信协议,总是使用HTTPs协议。

2、域名

<1>.应该尽量将API部署在专用域名之下,(这中情况会存在跨域问题)

https://api.example.com

<2>.如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。

https://example.org/api/

3、版本(Versioning)

应该将API的版本号放入URL。

https://api.example.com/v1/

另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。

https://api.example.com/?version=v1

4、路径

路径又称"终点"(endpoint),表示API的具体网址,视网络上任何东西都是资源,均使用名词表示(可复数),在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数

https://api.example.com/v1/zoos
https://api.example.com/v1/animals
https://api.example.com/v1/employees

5、HTTP动词

对于资源的具体操作类型,由HTTP动词表示。

常用的HTTP动词有下面五个(括号里是对应的SQL命令)。

GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。

还有两个不常用的HTTP动词。

HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

下面是一些例子。

GET /zoos:列出所有动物园
POST /zoos:新建一个动物园
GET /zoos/ID:获取某个指定动物园的信息
PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
DELETE /zoos/ID:删除某个动物园
GET /zoos/ID/animals:列出某个指定动物园的所有动物
DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物

6、过滤信息(Filtering)

如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。

下面是一些常见的参数。

https://api.example.com/v1/zoos?limit=10:指定返回记录的数量
https://api.example.com/v1/zoos?offset=10:指定返回记录的开始位置
https://api.example.com/v1/zoos?page=2&per_page=100:指定第几页,以及每页的记录数
https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序
https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件

参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals?zoo_id=ID 的含义是相同的。

7、状态码(Status Codes)

服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。

200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

8、错误处理(Error handling)

如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

{error: "Invalid API key"
}

9、返回结果

针对不同操作,服务器向用户返回的结果应该符合以下规范。

GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档

10、Hypermedia API

RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。

比如,当用户向api.example.com的根目录发出请求,会得到这样一个文档。

{"link": {"rel":   "collection https://www.example.com/zoos","href":  "https://api.example.com/zoos","title": "List of zoos","type":  "application/vnd.yourformat+json"
}}

三、SpringBoot注解

1、@ResponseBody

表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@Responsebody后,会直接返回json数据。该注解一般会配合@RequestMapping一起使用。

2、@Controller

用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。

3、@RestController

用于标注控制层组件(如struts中的action),@ResponseBody和@Controller的合集。

4、@ResquestMapping

提供路由信息,负责URL到Controller中的具体函数的映射。

5、@Autowired

自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。

6、@Service

一般用于修饰service层的组件

7、@Repository

使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

8、@PathVariable

通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)

9、@RequestParam

@requestParam主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”),它有三个常用参数:defaultValue = “0”, required = false, value = “isApp”;defaultValue 表示设置默认值,required 铜过boolean设置是否是必须要传入的参数,value 值表示接受的传入的参数类型。

10、@PathVariable和@RequestParam的区别

①请求路径上的区别:

@RequestParam是https:url ?键值对

@PathVariable是https:url /参数

②@PathVariable主要用于接收http://host:port/path/{参数值}数据。③@RequestParam主要用于接收http://host:port/path?参数名=参数值数据,这里后面也可以不跟参数值。

@RequestParam用于获取参数,可获取?username="sss"这种?后面的参数值

11、@RequestBody和@ResponseBody的区别

(1) @RequestBody

①作用是将前端传来的json格式的数据转为自己定义好的javabean对象

②传入数据的属性名称要和后端javabean中定义的一致

③写在方法的参数前,不能写在方法名上方

(2) @ResponseBody

作用是将后端以return返回的javabean类型数据转为json类型数据。

四、Maven3

1、概念

2、生命周期

  1. clean 生命周期是用于清理项目 (默认是删除了target文件夹)

  2. default 生命周期是用于构建项目

  3. site 生命周期是是用于建立项目站点

3、命令

1)、mvn compile 编译,将Java 源程序编译成 class [字节码]文件。

2)、mvn test 测试,并生成测试报告

3)、mvn clean 将以前编译得到的旧的 class 字节码文件删除

4)、mvn pakage 打包,动态 web工程打 war包,Java工程打 jar 包。

5)、mvn install 将项目生成 jar 包放在仓库中,以便别的模块调用

SpringBoot个人学习相关推荐

  1. 8. SpringBoot基础学习笔记

    SpringBoot基础学习笔记 课程前置知识说明 1 SpringBoot基础篇 1.1 快速上手SpringBoot SpringBoot入门程序制作 1.2 SpringBoot简介 1.2.1 ...

  2. SpringBoot基础学习之SpringBoot配置(上篇)

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个SpringB ...

  3. SpringBoot基础学习之整合Swagger框架(上篇)

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个SpringB ...

  4. SpringBoot入门学习(六)之云收藏项目

    目录 1.Spring Boot的思维导图分析 2.项目介绍 3.项目分析 4.创建SpringBoot项目,添加依赖 5.数据库 6.特别说明 7.效果展示 8.源码下载地址 本篇文章是Spring ...

  5. 《SpringBoot框架学习二之HTTP协议》

    <SpringBoot框架学习二之HTTP协议> 文章目录 <SpringBoot框架学习二之HTTP协议> 一.HTTP介绍 (1)概述 (2)HTTP版本协议 1.HTTP ...

  6. 【SpringBoot】最新版2019Spring Boot配置解析,源码解析(速成SpringBoot)——学习笔记版【2】

    SpringBoot配置文件 文章目录 SpringBoot配置文件 四.配置文件 1.简介 2.YAML用法 2.1 简介 2.2语法 3.为属性注入值 3.1使用.yml配置文件 3.1编写.ym ...

  7. SpringBoot入门学习(五)之旅游网站项目

    目录 1.项目需求 2.技术需求 3.pom.xml 4.application.yml 4.MybatisPlus的配置文件 5.springboot中配置日期类型转换器 6.用户管理 7.线路管理 ...

  8. SpringBoot基础学习之整合SpringSercurity框架

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个SpringB ...

  9. 项目记录(1)---SpringBoot的学习

    SpringBoot 0.学习目标 了解SpringBoot的作用 掌握java配置的方式 了解SpringBoot自动配置原理 掌握SpringBoot的基本使用 了解Thymeleaf的基本使用 ...

  10. SpringBoot+Shiro学习(一):主要模块介绍

    这篇文章是我最近对SpringBoot+Shiro+mybatis+redis一个练手项目的记录. 我是按照慕课网的一篇课程+百度进行练手的 慕课课程 练手项目Github地址 跟着开涛学Shiro ...

最新文章

  1. mongodb的聚合操作
  2. mongodb查找报错
  3. linux怎么创建新用户名和密码错误,linux重命名root后,使用su命令切换新用户时,提示密码错误...
  4. 一份传世典文:十年编程(Teach Yourself Programming in Ten Years)
  5. 腾讯首次公布微信最全用户数据【完整版】
  6. 学python用ubuntu还是win10_Windows 10上使用Ubuntu的优点
  7. JavaScript基础04【逻辑、复制、关系、相等运算符、Unicode编码表】
  8. OpenXava 4.5支持JPA继承映射和自动化业务逻辑
  9. oracle中to_date函数详解
  10. 全数字伺服系统中位置环和电子齿轮的设计
  11. webstorm 配置sass
  12. Spring好处—总结
  13. 解析二进制文件的工具方法
  14. 电信天翼网关接不上服务器无信号咋小,天翼网关有wifi信号,但不能上网的问题汇总解答...
  15. 怎么使用电脑打开手机分享的vcf联系人文件
  16. 券商单向视频见证开户全面开放!菊风泛金融单向视频开户一体化解决方案极速助力
  17. 【前端面试题】01—42道常见的HTML5面试题(附答案)
  18. 基于 Redis 的分布式锁到底安全吗(下)?
  19. 机器人届的“擎天柱”来了!能够在空中变形以快速栖息的四旋翼机器人
  20. ssm基于SSM的南昌旅游网站管理系统设计与实现 毕业设计源码101407

热门文章

  1. 第一章 由内而外全面造就自己
  2. linux流量监控分析工具,Linux网络流量监控与分析工具Ntopng
  3. SRE(运维工程师)的核心能力
  4. FlinkSql系列5之 Regular Join
  5. Word打印目录或另存为PDF时出现“错误!未定义书签!”的解决办法
  6. eslint 修改standard规则
  7. Java爬虫(三)后台发请求获取页面解析数据
  8. 快速排序(萝卜填坑算法)【必会知识】
  9. 如何防御网站被攻击?
  10. 菜鸟阿鑫的常用类(上)总结