【发布时间】:2014-07-04 14:41:43
【问题描述】:
假设我有一个 RESTful API,我在其中发布到 /doSomething 以开始运行任务。这个任务启动了一个类的实例来做某事。
如果我希望能够为该任务添加任意功能,但让原始类完成大部分已经完成的工作。一般的智慧是在类上使用装饰器模式来添加我想要的功能。
我的绊脚石是我想不出一种雄辩的方式来将它添加到 RESTful API。我考虑过的选项是:
- 发布到
/doSomething/andALittleMore。不过这会让人感到困惑,因为我可能有多个链式装饰器,这可能会导致问题。 - POST 到
/compose并为原始任务和装饰器设置一堆不同的post 参数。这对于多个装饰器也会很麻烦。 - POST 到
/compose,并将任务和装饰器的一组选项作为 JSON 传递。这会为哪些参数用于哪些功能添加一些顺序,但 JSON 将是一团糟。 - 有一个接受组合命令的路由。更麻烦的是,现在我不得不担心这将使用哪种语言,可能会标记和解析该命令等。
- 发帖到
/doALittleMore并假装/doSomething不是路线的一部分。这消除了 URI 的描述性。
我想不出一种方法来完成我想要做的事情,而且感觉它不会将 RESTful 精神从 API 中带走。但是 REST 和装饰器模式已经存在了很长时间。这两种设计一般是如何结合的?
【问题讨论】: