REST on Rails指南3: RESTful Design

通过上一讲,我们明白了为什么Web需要按照REST的方式来设计,而不是传统的面向对象编程的RPC方式,这一讲我们将通过一个实例来演示如何进行REST方式的Web设计,也就是让我们的设计变的RESTful。

航空公司的需求

我们假设你为一家航空公司工作,你的任务是为他们设计一个航班管理系统,它的功能包括:

  • 允许公司员工通过Web前端来输入航班信息。航班信息包括航班的起飞和降落城市,以及起飞时间等。
  • 允许客户通过手机查询他的航班信息。
  • 允许第三方通过我们提供的API来获取我们的航班信息。

很没有难度,不是吗?如果你是个急性子,你甚至可能都顾不上将你无懈可击的设计转换成UML,就已经在你IDE的编辑框里输入了如下字符:

class FlightSchedule
def CancelFlight
......

但是慢着,在REST的世界里,我们不再需要操心这些,我们需要做的只有一件事情:

定义你的资源!

是的,就这一件,因为REST已经为我们定义好了用于操作这些资源的方法。

在这个例子里,我们首先会想到这几个资源:airports,airplanes,flights。当然可能还会有其它,但就让我们先从这几个开始吧!

我们首先要做的就是为这些资源分配URL,原则只有一个:尽可能的简单明了。

  • /airports,通过这个URL可以访问所有的机场资源
  • /airplanes,通过这个URL可以访问所有的飞机资源
  • /flights,通过这个URL可以访问所有航班资源

还有:

  • /airports/pudong,通过这个URL可以获取浦东机场的相关信息
  • /airplanes/ZJ3543,通过这个URL可以获取编号为ZJ3543的飞机信息
  • /flights/451,通过这个URL咋可以了解到航班451的起飞,降落城市已经起飞时间等信息。

方法已经准备好了

一旦你定义好了你的资源,整个设计也就完成了,因为,REST已经为你准备好了以下四个方法(并且不再需要其它的了):

  • GET,获取资源
  • POST,创建一个新资源
  • PUT,更新已存在的资源
  • DELETE,删除资源

通过HTTP调用这些方法

同样的,我们也不需要关心客户端如何来调用我们的方法,浏览器会帮我们搞定一切。

如果你仅仅只是在地址栏敲了个地址,然后按了下回车,浏览器会生成一条HTTP消息,并通过它来调用你输入的URL所代表的资源的GET方法。

如果你填写了一个表单,并点击了提交按钮,那么浏览器会将你填在表单中的信息组装成一条HTTP POST消息,并通过它来调用你想访问资源的POST方法。

但不幸的是,由于HTML的限制,目前你无法通过浏览器来调用资源的PUT和DELETE方法,不过这不重要,GET和POST对我们已经足够了。

好了,我们的基于REST的设计就这么完成了,下一讲,我们将演示如何使用Rest on Rails来快速优美的实现我们的设计。

你可能感兴趣的:(Web,浏览器,REST,Rails,UML)