http://techblog.insureme.com.tw/2012/03/tastypiedjango-api.html
透過 Tastypie ,可將 Django 後端定義的 Model 快速的變成 API ,
讓我們可以很方便的透過 GET / POST / PUT ,取得JSON格式的資料,或是更進一步的對後端資料庫操作。
restful其实就是一种约定,但是实际应用中呢并非完全采用restful风格,例如put delete等这些提交方法都没怎么用,用到的还是get和post,但是在url地址链接上还是要遵守rest风格的,例如http://localhost:/api/list?id=1
意思就是查找id为1的列表,
http://localhost:/api/create?id=1&name=xx
意思就是创建id=1,name=xx的记录,
这样能够很好的区别以前的链接形式,以前你可能这样写
http://localhost:/api/action.do?method=create&id=1&name=xxx
我个人感觉实际中是这些区别
http://www.dewen.org/q/7612/#15671
任何一个URI都可以看成资源,你可以把资源简单类比为OOP中的对象,是对一个事物的高度抽象。一切系统中的东西都可以抽象为资源:
用户http://example.com/user
商品http://example.com/product/1
等等。
问题2:
但一个URI到底是不是资源并不是由网址决定的,网址只是起到对这个资源的描述作用,网址设计的好,用户可能更直观的明白资源是做什么的。但网址最终只是一串符号,一个URI是不是资源还是有这个URI的实际功能决定的。所以你不能仅仅根据一个URI判断这是不是一个资源,符不符合RESTFul风格。
不过我们还是可以评价一个URI是不是一个好的设计,你给出的两个例子中/resources/142是好的设计,/resources/142/get不是,因为/resources/142看起来像是一个事物,/resources/142/get看起来像是一个动作,只有事物才符合资源的定义。
所以简单说RESTFul风格的设计,你的URL中应该都是名词,避免出现动词。
问题3:
明确一点,RESTFul是用来设计Webservice/web API的,不是用来做网站的,网站只有GET/POST两种请求。
你要在网站中应用RESTFul,可以用一个特定input指定值为PUT/DELETE,模仿RESTFul的形式,但这并不是真的RESTFul设计。
或者可以通过AJAX请求访问RESTFul API,可以发起真正PUT/DELETE请求。