我目前正在设计一个基于Symfony框架的新Web应用程序,它将同时提供Web和移动访问。为了便于说明,我将使用Symfony框架中的默认AcmeDemoBundle来详细说明我的问题。Symfony2 Web服务
所以,DemoBundle给我下面的路线:
/hello/{name}
到目前为止好。现在,我想实现在这个项目中,将成为移动应用的API,因此对于相同的控制器所路线的路线上面对子级是,例如:
/api/v1/hello/{name}
我的疑问是:什么是最好的方式这样做没有复制代码?我打算使用API的FOSRestBundle,并且我知道他处理呈现HTML视图,但是我希望将API路由与Web分开,就像我之前提到的那样。也许我应该为API创建一个新的包?
这真的取决于你的目的。为API分开捆绑看起来很好的决定。但是,如果你需要(web和api)返回相同的数据(但格式不同),我认为这不是一个好主意,因为如果有任何改变,你将不得不做两次更改。 您可以在路线中使用{格式}来管理可能的渲染方式或其他。 – Alex 2014-10-28 06:25:44
是的,你说的关于不是一个好主意分开捆绑API是有道理的......但尽管FOSRestBundle使用{format}参数处理路由,但它不完全是我想要的,因为路由对于web和API,只有{格式}有区别。但我会更深入地了解有关路线的捆绑文档... – 2014-10-29 12:46:56