2012-04-17 17 views
8

Vamos a implementar un conjunto de servicios web REST en PHP. Hemos seleccionado 2 marcos para hacer eso: Symfony 2 y Silex (micro-framework como un archivo phar, basado en Symfony2).Servicios web REST: Symfony 2 vs silex

Por ahora, habrá unos pocos servicios, con algunos recursos devueltos como GET, pero el conjunto de métodos eventualmente crecerá e incluirá otras acciones de reposo (put/post/delete).

Esta es la lista de los pros y los contras que tengo hasta ahora para estos 2 marcos

Symfony2

Pros:

  • más potente
  • ORM de Doctrine
  • puede depurar con XDebug
  • config en YML
  • más utilizados en la comunidad
  • más apoyo
  • terminación automática de IDE
  • rápida

contras:

  • Necesita FOSBundle hacer reposo (?) (en realidad, me gustaría saber si esto es realmente útil)

Silex

Pros:

  • ligera
  • parece más fácil para crear URLs REST
  • más fácil de implementar (archivo Phar)

Contras (?):

  • ninguna doctrina ORM
  • no puede depuración (archivo Phar)
  • sin terminación automática de IDE
  • config debe ser codificado
  • puede ser un poco más lenta, ya que está en un archivo Phar?

¿Cuál crees que es el mejor?

Gracias

Respuesta

12

En lo personal me gusta mucho Symfony 2, es fácil para crear URLs REST utilizando la sintaxis de las anotaciones, en su controlador se pone algo así como

/** 
* @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

Hemos decidido ir con la opción de Symfony también – David

+3

¿Qué hay de https://github.com/FriendsOfSymfony/FOSRestBundle? – umpirsky

16

Depende del tamaño de su proyecto real y como dijiste que es bastante pequeño, hubiera elegido Silex.

Casi todos los inconvenientes que enumera para Silex se descartan cuando include silex through composer. Luego solo carga la dependencia de Silex dentro de los proveedores y usted no tiene la sobrecarga del phar ni la falta de compleción del código en su IDE. De hecho, the PHAR distribution is deprecated.

En cuanto a Doctrine, Silex tiene un built in Doctrine ServiceProvider que carga Doctrine DBAL sin problemas en su proyecto Silex. Puede agregar DoctrineORM fácilmente usted mismo o usar uno de los 3rd party serviceProviders que se encuentran en github.

Estoy construyendo una REST API bastante grande con Silex y no me arrepentí de haber empezado con Silex. Usted obtiene muchas de las ventajas de los componentes Symfony2 ya que el silex está construido con ellos y tiene un microframework listo para el descanso muy ligero sin tener que pasar por horas de configuración y configuración.

Y, para ser sincero, debo admitir que no soy un gran admirador de las anotaciones, las anotaciones están bien, pero creo que los ejemplos son @mcfedr, tómenlo demasiado lejos, pero eso es solo gusto personal.

Espero haber desmentido algunos de los prejuicios que tiene sobre Silex. Dale un golpe, no te arrepentirás. Por otro lado, probablemente tampoco te arrepentirás de Symfony2 :)

+1

Hola ChrisR. Tenía curiosidad de cómo está creando su documentación REST API con su proyecto Silex. ¿Lo haces manualmente o has encontrado un tipo de generador, como NelmioApiDocBundle para Symfony2? Personalmente, me gusta Silex, pero realmente estoy considerando Symfony2 solo para la generación de autoapi doc. –

+0

Desafortunadamente, no estoy autogenerando los documentos de la API, eso está en mi lista de tareas pendientes :) – ChrisR

+0

@ChrisR ¿Puedo preguntar cómo te fue en este proyecto? ¿Usó solo DBAL o entidades, etc. en su API? – coder4show