在设计REST API时,即使面向的消费者是程序而不是人类用户,也应该尽量以对浏览器友好的方式来设计。 那么什么叫做“对浏览器友好”呢?“对浏览器友好”的意思是说:仅仅使用浏览器+HTML就可以方便地对REST API做测试。 大家知道,HTML表单仅仅支持GET和POST两种HTTP方法,不支持PUT/DELETE方法。然而操作服务器端的资源,仅仅有GET/POST两种方法是不完备的,必须要实现PUT/DELETE方法。 为了解决这两者之间的矛盾,聪明的REST开发框架的设计师想出了一个办法。就是通过在HTML表单中加入一个“_method”隐藏字段,来模拟PUT/DELETE方法。 例如:当REST开发框架接收到一个HTTP POST请求,它发现其中有一个_method=put的参数,那么它就会将这个请求等同于一个HTTP PUT请求。

这样设计带来的好处,就是REST API既可以使用程序来驱动,也可以使用HTML来驱动,因此测试起来非常方便。在测试的过程中,还可以借助Firebug之类的调试工具来查看请求/响应的内容、以及缓存是否生效。 如果使用HTTP Basic Authentication或者HTTP Digest Authentication方式对消费者做身份认证,浏览器对这两种身份认证方式有很好的支持。可以确信,只要使用浏览器测试没有问题,服务器端的实现与任何支持Basic/Digest身份认证的HTTP客户端库配合工作也不会有问题。