1) 为什么REST:
试想MVC模式。
如果您有多个相同内容的视图,模型 - 视图分离尤其有意义。
现在通过易于实现的特定于应用程序的协议将REST看作是一种机器友好的视图。让您的应用程序对希望将应用程序作为Web服务集成到自己的应用程序中的其他开发人员也有用。
REST是一种应用程序集成技术。
如果您想为您的应用程序提供机器和开发人员友好的Web服务API,那么REST是一个不错的选择。
2) REST vs RPC REST应该按照无状态的方式实现每个定义。 RPC调用是对对象或会话变量的远程方法调用,这会使RPC API处于有状态,并且在许多情况下更昂贵。
3) 不同REST风格 与REST的问题是,它并不总是很容易为对象的所有操作地图上常见的HTTP方法GET,POST,PUT,DELETE,OPTIONS。
显然CRUD可以通过将4个CRUD操作分配给GET,POST,PUT,DELETE方法来实现。
但是你也可以在POST方法的HTTP主体中编写这种操作,这是做REST的简约GET,POST风格。
问题并非所有的HTTP客户端都可以发送PUT请求。
由CRUD式的服务倡导的解决方案是通过注释POST请求有一个特殊的HTTP标头以模拟PUT请求: X-HTTP-方法 - 替换:PUT
但是,这并不能解决问题,因为一些外来的防火墙删除了这个非标准的HTTP头。
Roy Fielding创造了RESTful API这个术语,他还提到他认为用GET和POST设计一个完美的RESTful系统是完全可能的。
4) 将REST添加到现有的MVC Web应用程序中需要至少实现一个额外的RESTful控制器,该控制器将HTTP方法转换为由请求URI标识的模型对象上的PUT,POST,DELETE动作,实现更加机器友好的视图(JSON,XML,...)。
此信息应该很有用:http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web-browsers –