提供REST API和提供带有基本API的“Web服务”来检索和/或修改数据有什么区别?

时间:2011-08-19 00:22:57

标签: django web-services rest

所以我即将使用Django使用django-piston编写REST API,但我的雇主只是希望能够检索和创建数据,所以我想知道它们之间有什么区别:

  • 只需创建设置和检索数据并制作数据的方法 公开可用(当然,在中进行身份验证和验证) 地方)
  • 创建REST API以创建和检索数据 ?

提前致谢!

2 个答案:

答案 0 :(得分:6)

你的第二点基本上是你的第一点的子集。 REST只是一组创建和检索数据的方法。然而,它是一组相当标准化的方法,使用HTTP动词而不是不同的URL来声明你想要做的事情。

所以代替/ comments / new /,/ comments / delete /,/ comments / update /,你只需要/ comments /和POSTing来创建,PUTing更新,DELETEing删除。

我也同意Zach on TastyPie的价值。

答案 1 :(得分:0)

“RESTful”的两个关键替代方案是传统的html表单或在HTTP之上实现的更正式的RPC协议,如XML-RPC或SOAP。

前者的主要优点是可以通过没有客户端代码的Web浏览器调用它;但除非应用程序是以深思熟虑的方式设计的,否则从自定义客户端驱动这样的界面通常非常困难;它必须经常设置cookie来进行身份验证并指定它不感兴趣的参数。对于这种API也没有数据类型的概念,一切都是文本。

后者的优势在于可以让您立刻开始运行;您可以使用装饰器在python中编写普通函数,并且它们可用于具有相应客户端库的客户端。主要的缺点也是这通常要求客户端拥有这样的库。像soap或xml-rpc这样的东西通常不是浏览器内应用程序或资源受限设备的选项。

RESTful是一种结合了两者优点的中间方式。由于语义完全是根据HTTP定义的,因此任何能够发出HTTP的客户端都可以使用RESTful API。 HTTP比普通的旧Web表单灵活得多,通常是在为请求提供Content-Type或支持所需结构的响应方面。遗憾的是,实际上没有一个标准定义RESTful客户端或服务应该如何表示他们的数据,因此必须在两端进行一些自定义以使事情以最佳方式工作。有时灵活性意味着你花费更多的时间来获得api,如果你使用了不同的界面,你将不得不这样做,但它通常会导致更薄但更少漏洞的抽象。

有一些标准或事实上的标准也是RESTful接口的好模型,例如json-rpc和Atom发布协议。