我是否应该将RESTful API控制器与";正规的;控制器?

我是否应该将RESTful API控制器与";正规的;控制器?,rest,Rest,这似乎是一个基本问题,但经过大量搜索,我似乎找不到一个简单的解释: 如果我正在构建一个主要通过web浏览器访问的web应用程序,但它也将以RESTful方式支持一些API请求,那么这两者之间是否应该有很大程度的分离呢 一方面,大量的功能似乎是相同的,相同的数据在不同的视图中呈现(HTML和XML/JSON)。但另一方面,我需要向浏览器展示一些不太适合RESTful方法的东西:如何获取空表单以创建资源的新实例,以及如何获取预填充表单以编辑现有资源 这两种不同的访问系统的方法是否应该通过不同的控制器

这似乎是一个基本问题,但经过大量搜索,我似乎找不到一个简单的解释:

如果我正在构建一个主要通过web浏览器访问的web应用程序,但它也将以RESTful方式支持一些API请求,那么这两者之间是否应该有很大程度的分离呢

一方面,大量的功能似乎是相同的,相同的数据在不同的视图中呈现(HTML和XML/JSON)。但另一方面,我需要向浏览器展示一些不太适合RESTful方法的东西:如何获取空表单以创建资源的新实例,以及如何获取预填充表单以编辑现有资源


这两种不同的访问系统的方法是否应该通过不同的控制器导入?同一控制器中的不同方法?与视图类型开关完全相同的方法?

您的核心控制器不必更改,但这并不意味着您不能有一些额外的控制器来支持您的UI。例如,您拥有的两个表单示例对于Web API都是唯一的。您的条目URI当然可以为机器和用户界面提供指向这些页面的链接,只是不要期望机器用户实际使用它们

此外,如果您的机器客户端只是XML/JSON,那么这些表示根本不需要表单的链接,因为它们不会使用它们,而且它们在JSON/XML中也不会“工作”。您可以通过内容协商进行管理