RestFul 规范是怎么样的

举报
酸菜鱼. 发表于 2022/09/11 11:39:20 2022/09/11
【摘要】 RestFul 规范是怎么样的?通用的接口规范:Restful 接口规范 - 规定了url如何编写;请求方式的含义;响应的数据规则url 编写https协议 - 保证数据安全性api字眼 - 标识操作的是数据v1、v2字眼 - 数据的不同版本共存资源复数 - 请求的数据称之为资源拼接条件 - 过滤群查接口数据(https://api.baidu.com/books/?limit=3&orde...

RestFul 规范是怎么样的?
通用的接口规范:Restful 接口规范 - 规定了url如何编写;请求方式的含义;响应的数据规则

url 编写

https协议 - 保证数据安全性

api字眼 - 标识操作的是数据

v1、v2字眼 - 数据的不同版本共存

资源复数 - 请求的数据称之为资源

拼接条件 - 过滤群查接口数据(https://api.baidu.com/books/?limit=3&ordering=-price)

路劲:对于一个简洁结构,你应该始终用名词。 此外,利用的HTTP方法可以分离网址中的资源名称的操作。

GET /products :将返回所有产品清单
POST /products :将产品新建到集合
GET /products/4 :将获取产品4
PATCH /products/4 将更新产品4(部分属性更新)
PUT /products/4:将更新产品4 (全部属性更新)
请求方式
/books/ - get - 群查
/books/(pk)/ - get - 单查
/books/ - post - 单增
/books/(pk)/ - put - 单整体改
/books/(pk)/ - patch - 单局部改
/books/(pk)/ - delete - 单删

请求方法 请求地址 后端操作
GET /students 获取所有学生
POST /students 增加学生
GET /students/1 获取编号为1的学生
PUT /students/1 更新编号为1的学生(全部属性)
DELETE /students/1 删除编号为1的学生
PATCH /students/1 更新编号为1的学生(部分属性)
响应结果

网络状态码与状态信息:2xx | 3xx | 4xx | 5xx

数据状态码:前后台约定规则 - 0:成功 1:失败 2:成功无结果

数据状态信息:自定义成功失败的信息解释(英文)

数据本体:json数据

数据子资源:头像、视频等,用资源的url链接

状态码

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

返回结果

GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档
. @Autowired 与@Resource的区别
@Autowired是根据类型进行自动装配的。如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。

@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

@Resource装配顺序
如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
@Autowired 与@Resource的区别:

@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。

@Autowired默认按类型(byType)装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

@Autowired ()
@Qualifier ( “TestService” )
private TestService testService;

@Resource(这个注解属于J2EE的),默认按照名称(byName)进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

@Resource (name= “TestService” )
private TestService testService;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。