#### 统一接口
RESTful应该有统一接口。HTTP 1.1 提供了一系列方法,被称为动作。在这其中比较重要的动作是:
![](https://box.kancloud.cn/860fe9f154fa58301a9cbdf5fa000c44_664x249.png)
安全的操作是指对原始资源值不会产生影响的操作。列如,数学上的操作除以1就是安全的操作,因为无论多少次用1除一个数,原始数值都不会改变。幂等操作是指无论多少次执行都给出相同结果的操作。例如,数学上的乘以0就是幂等的,因为无论计算多少次结果都是零,结果都是一样的。类似的,一个安全的HTTP方法不会使服务器上的资源发生变化。一个幂等的HTTP方法无论执行多少次都会有相同的响应。把方法分类成安全和幂等的可以使客户端在不稳定的Web环境中再次触发相同的请求的结果变得更可预测。
在 Web 上 GET 可能是最流行的方法。它用来获取资源。
HEAD 仅返回响应头和空的响应体。这个方法可以用在你不需要全部的资源模型表示(representation)的时候。例如,HEAD 可以快速检测服务器上的资源是否存在。
OPTIONS 用于获取资源允许的操作。
例如,思考下面的请求:
~~~
OPTIONS http://MyService/Persons/1 HTTP/1.1
HOST: MyService
~~~
在服务验证之后请求返回下面内容:
~~~
200 OK
Allow: HEAD, GET, PUT
~~~
第二行包含客户端可以使用的方法。
你应该仅仅出于它们的实际意义使用这些方法。例如:绝不要使用 GET 在服务器上创建或删除资源。如果你没这样做,将会扰乱你的客户端导致他们做出意外的操作。举例说明,我们考虑下面的请求:
~~~
GET http://MyService/DeletePersons/1 HTTP/1.1
HOST: MyService
~~~
根据 HTTP 1.1 规范,GET 请求的目的是从服务器获取资源。但是它很容易实现一个删除 Person 的请求。这个请求也许运行的很棒,但是这不是RESTful 设计。换言之,使用 DELETE 方法来删除资源像下面这样:
~~~
DELETE http://MyService/Persons/1 HTTP/1.1
HOST: MyService
~~~
REST 建议统一接口,HTTP 提供了统一接口。然而,这由服务架构师和开发人员保持它的统一。