2012-04-17 99 views
8

我们将用PHP实现一组REST Web服务。我们已经选择了2个框架来做到这一点:Symfony 2和Silex(基于Symfony2的微型框架作为phar存档)。REST Web服务:Symfony 2 vs silex

现在只有少数服务,只有少量资源作为GET返回,但方法集最终会增长并包含其他休息操作(put/post/delete)。

这里是我走到这一步,这些2个框架

Symfony2的

优点利弊清单:

  • 更强大
  • 学说ORM
  • 可以用XDebug进行调试
  • 配置在阳明
  • 社区
  • 更多的支持
  • 自动完成的IDE
  • 快速

缺点更习惯:

  • 需要FOSBundle做REST(? )(实际上,我想知道这是否真的有用)

Silex的

优点:

  • 轻量级
  • 似乎更容易创建REST的URL
  • 更容易部署(药业档案)

缺点(?):

  • 没有学说ORM
  • 无法调试(药业档案)
  • 在IDE自动完成没有
  • 配置必须被硬编码
  • 可能会有点慢,因为它是在存档药业?

你认为哪一个最好?

感谢

回答

12

我个人很喜欢的symfony 2,它很容易创建使用注释语法REST的网址,在你的控制器,你把东西像

/** 
* @Route("/user/{id}", requirements={"id" = "\d+"}, defaults={"_format"="json"}) 
* @Method({"GET"}) 
*/ 
public function getUser($id) { 
    ... 
} 
/** 
* @Route("/user", defaults={"_format"="json"}) 
* @Method({"PUT"}) 
*/ 
public function putUser() { 
    ... 
} 
+1

我们已经决定去与Symfony选项以及 – David 2012-04-18 13:45:00

+3

那么https://github.com/FriendsOfSymfony/FOSRestBundle呢? – umpirsky 2012-11-18 10:32:58

16

你的项目的大小取决于真和既然你说它很小,我会选择Silex。

几乎所有您列出的Silex的缺点都会在include silex through composer时被排除。然后,它只是在供应商内部加载Silex依赖关系,并且您没有pha​​r的开销,也没有在IDE中缺少代码完成。其实the PHAR distribution is deprecated。至于Doctrine,Silex有一个built in Doctrine ServiceProvider,可以在Silex项目中无缝加载Doctrine DBAL。您可以轻松地自行添加DoctrineORM或使用github上的3rd party serviceProviders之一。

我正在用Silex构建一个相当大的REST API,并没有后悔用Silex开始的一件事情。 Symfony2组件拥有很多优点,因为它们是与它们一起构建的,并且具有非常轻量级的可以休息的微框架,而无需经过几个小时的配置和设置。

而且说实话,我必须承认我不是注释的一个巨大的风扇,注解是很好,但我认为例子是@mcfedr把它有点过头了,但是这只是个人的品味。

我希望我能揭穿一些你对Silex的偏见。摇摆一下,你不会后悔的。另一方面,你可能不会后悔Symfony2 :)

+1

Hi ChrisR。我很好奇你是如何为你的Silex项目创建REST api文档的。你是手动做还是找到了一种发生器,比如symfony2的NelmioApiDocBundle。就我个人而言,我喜欢Silex,但我真的在考虑Symfony2只是为了生成auto api文档。 – 2012-08-22 08:01:41

+0

不幸的是,我不是自动生成API文档,这是在我的待办事项列表:) – ChrisR 2012-09-04 14:21:39

+0

@ChrisR我可以问你如何继续这个项目?你是否在你的API中使用了DBAL或实体等? – coder4show 2015-10-05 21:05:08