【原创文章,转载请注明原文章地址,谢谢!】
摘要,本文主要是简单讨论RESTful的相关设计问题,包括资源设计,动作设计和响应设计。
资源设计
在本系列第一篇文章中已经通过一个优惠券的例子给大家简单阐述了一下资源的设计,包括二级资源的设计。下面我们来看下详细的资源设计方案:
前面我们已经了解到,在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的”集合”(collection),所以API中的名词也应该使用复数。
例如,针对一个动物园应用,可能涉及到的资源就应该有:
https://api.example.com/v1/zoos:动物园资源
https://api.example.com/v1/animals:动物资源
https://api.example.com/v1/employees:饲养员资源
注意设计的方案,最后一个单词都是名词并且都是复数。对于简单的应用来说,一般一个资源就对应一个表,这样的设计已经足够。但是更多的情况,面对复杂的应用,因为HTTP提供的接口是有限的(HTTP一共就提供了常用的5种请求方式,所以能表示的对一个资源的操作是有限的)怎么抽取出合适的资源,也是一个相对来说比较困难的事情。这个在我们后面的实战示例中会提到。