Rails ActiveResource
-
18-09-2019 - |
Domanda
Siamo nel processo di costruzione di un'API REST conforme. Il backend è realizzato in PHP e vogliamo l'interfaccia per seguire la convenzione sopra motto di configurazione.
Molti dei consumatori API sarà sviluppatori Rails, e seguendo una strategia TDD per costruire l'API, abbiamo pensato di utilizzare ActiveResource per implementare un consumatore mentre ha plasmato l'API di rispettare tali norme.
Questo approccio è caduto in disgrazia? Quali altre opzioni o convenzioni potremmo essere in grado di aderire a in modo da poter stare tranquillo dopo aver costruito una solida API (come Flickr, Facebook, Twitter, ecc.)?
Grazie per eventuali suggerimenti.
Chad
Soluzione
ActiveResource richiede l'XML per essere piuttosto prolisso, e IMO non molto ben progettato (nidificazione di entità può essere un vero e proprio mal di testa)
Se la stragrande maggioranza dei vostri consumatori saranno gli sviluppatori Rails poi magari utilizzando ActiveResource servizi REST conformi potrebbe essere la strada da percorrere, ma cercherà piuttosto brutto ai non Rails consumatori.
Se si desidera qualsiasi tecnologia sia in grado di consumare, non vorrei usare ActiveResource, e creerebbe XML (o JSON) che si adatta ai dati.
Ho costruito un paio di sistemi che comunicano tramite ActiveResource, e più recentemente ho trovato più facile fare come suggerisco sopra.
Altri suggerimenti
Utilizzando le convenzioni ActiveResource per i metodi HTTP e URL di mappatura per le azioni API è una buona idea, soprattutto se come dici molti dei vostri utenti utilizzeranno Rails. In aggiunta a ciò vi consiglio di leggere " il servizio Web potrebbe non essere RESTful Se ... " trattamento come solo correttamente GET / POST / PUT / DELETE è tutto ciò che è necessario per essere davvero REST. A proposito, molte delle API che hai citato non sono realmente REST.
potrebbe essere un po 'tardi, ma se si sta costruendo API per i dati di questo è sicuramente la pena di lettura: https://plus.google.com/112678702228711889851/posts/eVeouesvaVX