2012-04-17 17 views
8

Implementeremo una serie di servizi Web REST in PHP. Abbiamo selezionato 2 framework per farlo: Symfony 2 e Silex (micro-framework come archivio phar, basato su Symfony2).Servizi Web REST: Symfony 2 vs silex

Per ora, ci saranno solo alcuni servizi, con poche risorse restituite da ottenere, ma l'insieme di metodo alla fine crescere e includere altre azioni di riposo (messo/post/delete).

ecco la lista di pro e contro che ho finora per questi 2 quadri

Symfony2

Pro:

  • più potente
  • ORM Doctrine
  • può eseguire il debug con XDebug
  • config nella YML
  • più usato nella comunità
  • più sostegno
  • completamento automatico in IDE
  • veloce

contro:

  • Necessità FOSBundle fare REST (?) (in realtà, mi piacerebbe sapere se questo è davvero utile)

Silex

Pro:

  • leggero
  • sembra più facile per creare URL REST
  • più facile da implementare (archivio phar)

Cons (?):

  • senza Dottrina ORM
  • non può eseguire il debug (filmati phar)
  • senza il completamento automatico in IDE
  • config deve essere codificato
  • può essere un po 'più lento, in quanto è in un archivio phar?

Quale pensi sia il migliore?

Grazie

risposta

12

Personalmente mi piace molto symfony 2, è facile creare URL REST utilizzando la sintassi annotazioni, nel controllore si mette qualcosa di simile

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

Abbiamo deciso di andare anche con l'opzione Symfony – David

+3

Che dire di https://github.com/FriendsOfSymfony/FOSRestBundle? – umpirsky

16

dipende dalle dimensioni del vostro progetto realmente e dal momento che hai affermato che è piuttosto piccolo avrei scelto Silex.

Quasi tutti gli svantaggi elencati per Silex sono esclusi quando si è include silex through composer. Quindi carica solo la dipendenza Silex all'interno dei fornitori e non si ha il sovraccarico del phar né la mancanza di completamento del codice nel proprio IDE. Infatti the PHAR distribution is deprecated.

Per quanto riguarda Doctrine, Silex ha uno built in Doctrine ServiceProvider che carica Doctrine DBAL nel progetto Silex. Puoi aggiungere facilmente DoctrineORM o utilizzare uno dei modelli 3rd party serviceProviders trovato su github.

Sto costruendo una API REST piuttosto grande con Silex e non mi sono pentito di una singola cosa che inizia con Silex. Ottieni molti dei vantaggi dei componenti Symfony2 poiché silex è costruito con essi e ha un microframework molto leggero e pronto per il riposo senza dover passare ore e ore di configurazione e configurazione di yaml.

E ad essere onesti devo ammettere che non sono un grande fan delle annotazioni, le annotazioni vanno bene, ma penso che gli esempi siano @mcfedr, prendetene un po 'troppo lontano ma è solo un gusto personale.

Spero di aver ridimensionato alcuni dei pregiudizi che hai su Silex. Dai un tocco, non te ne pentirai. D'altra parte, probabilmente non rimpiangerete neanche Symfony2 :)

+1

Ciao ChrisR. Ero curioso di sapere come stai creando la documentazione di api REST con il tuo progetto Silex. Lo fai manualmente o hai trovato un tipo di generatore, come NelmioApiDocBundle per symfony2. Personalmente mi piace Silex, ma sto prendendo in considerazione Symfony2 solo per la generazione di auto api doc. –

+0

Purtroppo non sto autogenerando i documenti API, questo è nel mio elenco delle cose da fare :) – ChrisR

+0

@ChrisR posso chiederti come sei andato avanti con questo progetto? Hai usato solo il DBAL o le entità ecc nella tua API? – coder4show