从零学 spring cloud第2-4课:基础 Web 开发之 构建 RESTful Web 服务

什么是 RESTful服务

简单的说:RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构。
其实我们前几节用的就是RESTful服务,这里做个总结。

如何实现 Restful Web Service

• 识别资源
• 选择合适的资源粒度
• 设计 URI
• 选择合适的 HTTP ⽅法和返回码
• 设计资源的表述

关于规范与约束有哪些

RESTful 架构的核心规范与约束:统一接口
分为四个子约束:
1.每个资源都拥有一个资源标识,每个资源的资源标识可以用来唯一地标明该资源
2.消息的自描述性
3.资源的自描述性。
4.HATEOAS Hypermedia As The Engine Of Application State(超媒体作为应用状态引擎)
即客户只可以通过服务端所返回各结果中所包含的信息来得到下一步操作所需要的信息,如到底是向哪个URL发送请求等。也就是说,一个典型的REST服务不需要额外的文档标示通过哪些URL访问特定类型的资源,而是通过服务端返回的响应来标示到底能在该资源上执行什么样的操作。

如何构建更好的 URI

• 使⽤域及⼦域对资源进⾏合理的分组或划分
• 在 URI 的路径部分使⽤斜杠分隔符 ( / ) 来表示资源之间的层次关系
• 在 URI 的路径部分使⽤逗号 ( , ) 和分号 ( ; ) 来表示⾮层次元素
• 使⽤连字符 ( - ) 和下划线 ( _ ) 来改善⻓路径中名称的可读性
• 在 URI 的查询部分使⽤“与”符号 ( & ) 来分隔参数
• 在 URI 中避免出现⽂件扩展名

认识 HTTP ⽅法

动作安全/幂等⽤途
GETY / Y信息获取
POSTN / N该⽅法⽤途⼴泛,可⽤于创建、更新或⼀次性对多个资源进⾏修改
DELETEN / Y删除资源
PUTN / Y更新或者完全替换⼀个资源
HEADY / Y获取与GET⼀样的HTTP头信息,但没有响应体
OPTIONSY / Y获取资源⽀持的HTTP⽅法列表
TRACEY / Y让服务器返回其收到的HTTP头

认识 HTTP 状态码

  • 成功

这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。

  • 重定向

这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。当且仅当后续的请求所使用的方法是 GET 或者 HEAD 时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。客户端应当自动监测无限循环重定向(例如:A->A,或者A->B->C->A),因为这会导致服务器和客户端大量不必要的资源消耗。

  • 请求错误

这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个 HEAD 请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。如果错误发生时客户端正在传送数据,那么使用TCP的服务器实现应当仔细确保在关闭客户端与服务器之间的连接之前,客户端已经收到了包含错误信息的数据包。如果客户端在收到错误信息后继续向服务器发送数据,服务器的TCP栈将向客户端发送一个重置数据包,以清除该客户端所有还未识别的输入缓冲,以免这些数据被服务器上的应用程序读取并干扰后者。

  • 服务器错误(5、6字头)

这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体。
这些状态码适用于任何响应方法。

描述状态码描述
200OK400Bad Request
201Created401Unauthorized
202Accepted403Forbidden
301Moved Permanently404Not Found
303See Other410Gone
304Not Modified500Internal Server Error
307Temporary Redirect503Service Unavailable
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值