RESTful
What's RESTful?
相关信息
RESTFul 是一种 URL 的设计规范,URL 表示一个资源,所以应该是名词,URI不应该有动词,动词应该放在 HTTP 协议中,URL 提供了 7 种提交方式。
七种请求方式:
- Get:用来获取资源。
- Post:用来新建资源,也可用于更新资源。
- Delete:删除资源。
- Put:更新资源。
- Patch:用于创建、更新资源,代表部分更新。
- Options:用于url验证,验证接口服务是否正常。
- Teace:回显服务器收到的请求。
- Head:获得获取资源的部分信息。
Spring Cloud 推荐使用 RESTFul 格式的 URL.
幂等
幂等是指无论调用多少次都不会有不同结果的 HTTP 方法。无论是调用一次,还是十次都无关紧要。结果仍应相同。
幂等对于构建一个容错的的 API 非常重要。假设更新一个资源,由于是非幂等方法,调用多次将导致错误的更新。通过幂等方法,则可以安全地重发请求。
幂等的请求方法:Get、Put、Delete、Options、Teace、Head
非幂等的请求方法:Post、Patch
常用注解
@RestController:相当于 @Controller 和 @ResponseBody.
@RequestBody :声明方法接收 JSON 格式字符串参数。
@PathVariable:声明方法接收路径参数。
@RequestParam:声明方法接收的参数是来自于请求头,也就是在 url 中。
参数说明:
- value:参数名。
- required:参数是否必需,默认为true。
- defaultValue:参数的默认值。
@RequestBody:声明方法接收的参数是来自于请求体 body 中。
@Null:限制参数只能为 null.
@NotNull:限制参数必须不为 null.
@AssertFalse:限制参数必须为 false.
@AssertTrue:限制参数必须为 true.
@DecimalMax(value):限制参数必须为一个不大于指定值的数字。
@DecimalMin(value):限制参数必须为一个不小于指定值的数字。
@Digits(integer,fraction):限制参数必须为一个小数,且整数部分的位数不能超过 integer,小数部分的位数不能超过 fraction.
@Future:限制参数必须是一个将来的日期。
@Max(value):限制参数必须为一个不大于指定值的数字。
@Min(value):限制参数必须为一个不小于指定值的数字。
@Pattern(value):限制参数必须符合指定的正则表达式。
@Size(max,min) :限制参数字符长度必须在 min 到 max 之间。
@Past:验证注解的元素值(日期类型)比当前时间早。
@NotEmpty:验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)。
@NotBlank:验证注解的元素值不为空(不为null、去除首位空格后长度为0),只应用于字符串且在比较时会去除字符串的空格。
@Email 验证注解的元素值是 Email,也可以通过正则表达式和 flag 指定自定义的 email 格式。