REST Service 基础

1. 代表性状态传输(Representational State Transfer,REST)。

2. REST 要求开发人员显式地使用 HTTP 方法,并且使用方式与协议定义一致。 这个基本 REST 设计原则建立了创建、读取、更新和删除(create, read, update, and delete,CRUD)操作与 HTTP 方法之间的一对一映射。 

按照HTTP协议的规定,GET方法时安全的且幂等的,POST方法是既不安全也不幂等的(可以用来作为所有写操作的通配方法), PUT/DELETE方式都是不安全但是幂等的。将对资源的操作合理映射到这四个方法上面,既不过度使用某周方法(例如过度使用GET方法和POST方法),也不添加过多的操作以至于HTTP的四个方法都不够用。

根据此映射:

  • 若要在服务器上创建资源,应该使用 POST 方法。
  • 若要检索某个资源,应该使用 GET 方法。
  • 若要更改资源状态或对其进行更新,应该使用 PUT 方法。
  • 若要删除某个资源,应该使用 DELETE 方法。

3. 不要将 HTTP 方法用于非预期用途,例如, 不要将Get用于创建artifact.
GET 的其他问题在于,为了触发数据库中的记录的删除、修改或添加,或者以某种方式更改服务器端状态,它请求 Web 缓存工具(爬网程序)和搜索引擎简单地通过对某个链接进行爬网处理,从而意外地做出服务器端更改。 克服此常见问题的简单方法是将请求 URI 上的参数名称和值转移到 XML 标记中。

4. 一般原则, 在URI中使用名词。

i.e.  addUser - > Post /users

       updateUser -> PUT /users/michael

5. 无状态。REST Web 服务需要发送完整、独立的请求;也就是说,发送的请求包括所有需要满足的数据,以便中间服务器中的组件能够进行转发、路由和负载平衡,而不需要在请求之间在本地保存任何状态。

互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。

i.e.  

在有状态的情况下请求

GET /resources/getNextPage?pagesize=10

<current page> 1 < /current page>

<last data> 10</last data>

我跟人的理解若果有30条数据, 那么page1 包含 1- 10, page2包含11-20, 在有状态的情况下, 如果在请求之前删除数据1, 2,在getNextPage请求后会返回页面11 - 10.

但是在无状态的情况下会getNextPage会返回地13 - 22条数据。


RESTful架构对于state的两个不同的解释: 应用状态(Application State)资源状态(Resource State)

  • 应用状态:指的是与某一特定请求相关的状态信息
  • 资源状态:则反映了某一存储在服务器端资源在某一时刻的特定状态,该状态不会因为用户请求而改变,任何用户在同一时刻对该资源的请求都会获得这一状态的表现(Representation)。

REST Web 服务 URI 的直观性应该达到很容易猜测的程度。 将 URI 看作是自身配备文档说明的接口,开发人员只需很少(如果有的话)的解释或参考资料即可了解它指向什么,并获得相关的资源。


在考虑基于 REST 的 Web 服务的 URI 结构时,需要指出的一些附加指导原则包括:

  • 隐藏服务器端脚本技术文件扩展名(.jsp、.php、.asp)——如果有的话,以便您能够移植到其他脚本技术而不用更改 URI。
  • 将所有内容保持小写。
  • 将空格替换为连字符或下划线(其中一种或另一种)。
  • 尽可能多地避免查询字符串。
  • 如果请求 URI 用于部分路径,与使用 404 Not Found 代码不同,应该始终提供缺省页面或资源作为响应。


Reference:

http://www.ibm.com/developerworks/webservices/library/ws-restful/

http://developer.51cto.com/art/200906/129424.htm

http://www.myexception.cn/software-architecture-design/1293211.html


### RestfulToolkit 中 restservice 图标不显示的解决方案 如果遇到 RestfulToolkit 的 `restservice` 图标无法正常显示的情况,可以尝试以下方法来解决问题: #### 方法一:检查插件配置与兼容性 确保当前使用的 IDE 版本以及 RestfulToolkit 插件版本之间具有良好的兼容性。某些情况下,图标可能由于插件未完全加载或者版本冲突而丢失[^1]。可以通过更新到最新版的插件或调整 IDE 设置来修复此问题。 #### 方法二:重新安装并初始化主题 卸载现有的 RestfulToolkit 插件后重新安装,并在启动时进入主题设置导航页面完成初始配置。这一步有助于恢复默认资源文件,包括图标的路径映射。 #### 方法三:验证 Spring Web 配置项 确认项目中的依赖是否正确引入了 Servlet 容器初始化服务的相关类。例如,在 Maven 或 Gradle 构建工具中应包含如下依赖声明: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.14.RELEASE</version> </dependency> ``` 上述依赖包含了必要的元数据和服务实现,用于支持 REST 服务的功能扩展[^2]。缺少这些基础组件可能导致 UI 层面的表现异常。 #### 方法四:自定义图标替代方案 当内置图标不可见时,可考虑采用外部库提供的 Material Design 图标集作为补充。通过修改全局样式表或将特定 HTML/CSS 注入视图层的方式定制化展示效果。 --- ### 示例代码片段 以下是基于 Java 和 Thymeleaf 实现的一个简单示例,演示如何动态加载第三方字体图标以弥补原生缺失情况下的需求满足度提升策略: ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>REST Service Icon Example</title> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/> <style type="text/css"> .rest-service-icon { font-family: 'Material Icons'; content: "settings"; color: blue; } </style> </head> <body> <i class="material-icons rest-service-icon"></i><span th:text="${serviceName}">Service Name Placeholder</span> </body> </html> ``` 以上代码利用 Google Fonts 提供的 Material Icons 字体族渲染了一个名为 “settings” 的图形符号,适用于多种前端框架集成场景下快速部署美观一致性的交互界面元素表现形式优化目标达成途径之一选项列举说明文档结束标记位置指示符. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值