【发布时间】:2016-07-06 04:53:39
【问题描述】:
我一直在查看http://restfulobjects.org 上提供的 RESTful 规范(直接链接到规范 here)。它与我见过的其他东西有点不同,但它是有道理的,并且有示例和清晰的规范使我的开发变得更加简单。
根据标准,URI 将类似于:
- api.example.com/object/user/31
- api.example.com/object/user/31/properties/username
- api.example.com/object/user/31/collections/channels
- api.example.com/object/user/31/actions/someFunction
- api.example.com/object/user/31/actions/someFunction/invoke
有关结构的简要说明,请参阅this answer。这很清楚。
注意:这不是讨论服务/操作是否可以 表示为资源。关于这个话题有一个很好的讨论 在这里:http://www.infoq.com/articles/Intro_Restful_Objects。查看 cmets 部分的末尾。
我的项目仍处于设计阶段,大部分设计元素尚待掌握。然而,我将使用 Symfony。我有我的实体,我有一些作用于这些实体的服务,我有控制器来定义服务在特定上下文中的作用。
我的实际问题也是如此:
...Restful Objects 规范不是基于 MVC 模式 - 它使 没有关于实现的服务器架构的假设 API。在网址中:
~/objects/customers/31/actions/lastOrder/invoke
'actions/lastOrder' 没有指定控制器动作,它是 在域对象 (customers/31) 上指定操作(即方法)
如果我想在 MVC 应用程序中使用规范,如何以最有效的方式构建控制器?考虑到控制器会以某种方式服务于不同的资源(对象、服务、域类型)以及该资源的不同表示。我的层是什么? 更新我有没有例如客户控制器?通用对象控制器?用户操作控制器?
我是否需要重新考虑我的整个实体/服务方法?即如何实现这一点的解决方案超出了控制器结构? (恐怕是这样,然后我不知道我的下一步)
-
为了简单/高效,我想使用 FOSRestBundle 和 NelmioAPiDocBundle。我相信这是可以做到的,但我担心该规范只会作为我的 url 模板,并没有在我的逻辑/设计中实现,因为我必须以某种方式调整我的框架以适应 URL。
如果这个问题有一个明显的答案,请原谅我的无知。我是 RESTful API 的新手。如果归结为对实现模型的主观看法,请给我一些指示,因为我目前不知道如何处理这个问题。
【问题讨论】:
标签: php rest symfony model-view-controller