如何理解RESTful中资源的概念?


REST设计风格的特点是:资源是由URI来指定,对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
那么:
1、如何理解资源呢?最好能通过实例说明。
2、http://example.com/resources/142,这种是restful风格的url,那么http://example.com/resources/142/get,这种风格是吗?如何理解呢?
3、PUT、DELETE在具体Web开放中如何应用呢?

Web开发 http协议

小样啊丫的 12 years, 5 months ago

问题1:

任何一个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请求。

沃赖巴卡星人 answered 12 years, 5 months ago

Your Answer