Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    8

    Web service rest in php: quale framework utilizzare?

    Salve a tutti,
    da tempo ho in cantiere (o meglio ancora in testa) un progetto online: per decidere in quale ambiente sviluppare, ho optato per il php piuttosto che l'asp.net (anche se per lavoro sto lavorando attraverso .net framework) per un fatto di costi minori.
    Visto che il progetto in questione si baserà su un'applicazione web che avrà una quantità di traffico abbastanza elevata (quindi occupazione cpu anche abbastanza alta) e cercare di progettare già dall'inizio un buon sistema, vorrei utilizzare su una macchina il database più un server che gestirà un web service e una seconda macchina che stavolta fungerà da web server (applicazione) che per i dati comunicherà tramite il web service, questo soprattutto per avere una maggiore sicurezzza ed evitare il più possibile problemi di injection sql.
    Dovendo lavorare con l'asp.net e il framework di supporto per lo sviluppo, mi trovo molto bene soprattutto per quanto riguarda la parte web service grazie a WCF e EntityFramework (ORM).
    Tenendo conto che conosco comunque abbastanza bene l'ambiente php e i maggiori framework (yii e laravel soprattutto per quanto concerne le applicazioni web anche avendo validi ORM), c'è la possibilità di creare delle API (magari da utilizzare anche esternamente, non solo per l'applicativo web) in modalità REST (preferirei REST al SOAP in quanto c'è abbastanza meno codice "verboso" e ha la possiblità di sfruttare il formato json in risposta che mi risulta per me molto più facile da usare) in grado di esporre risultati nel formato desiderato con annessa autenticazione, cioè in stile WCF implementando anche un ORM per lavorare con query complesse e avendo una gestione ancora più libera dei dati da esporre?
    Se c'è una risposta a questo ne sarei più che felice perchè sarebbe l'ultimo tassello mancante per poter cominciare seriamente a sviluppare il mio progetto.
    Scusate se ho scritto tutta questa pappardella però volevo esporre il più dettagliatamente il mio problema per avere una risposta che mi soddisfi

    Grazie in anticipo

  2. #2
    puoi creare benissimo delle api rest con php. Normalmente ogni framework degno di ta nome porta sempre come esempio la creazione di tale servizio.

    Per l'entity framework, ogni framework php viene con un suo strato. Altrimenti hai un framework come Doctrine che fà solo quello di mestiere.

    Se ti interessa, in società siamo partiti a fare un servizio restful usando Symfony 2 + FOSRestBundle per gestire le api sia via json che xml
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    8
    Grazie per la risposta.

    Ho letto come lavora Symfony e a quanto ho capito sfrutta molto il roting per gli url, del tipo se uno vuole fare un get di una risorsa in formati diversi, può farlo, basta che però specifica quale azione deve associrare.
    Per un ORM di appoggio non ho nessun problema: anzi preferirei un orm diverso dalla filosofia di EntityFramework visto che costruisce oggetti collegati direttamente al database e quindi dipendenti dalla struttura di esso e non semplici oggetti istanziati on-the-fly e indipendenti.
    Questo per me sarebbe l'ideale perchè nel mio progetto devo fare delle ricerche con filtri progressivi, cioè che si aggiungeranno man mano piuttosto di richiederli tutti al primo colpo.
    Quindi un controllo costruito in questo modo:

    Codice PHP:
    searchAllAction() {
        ....
        return array();
    }

    searchByIDAction($id){
        return 
    ObjectSet::find($id);
    }


    searchAction($p1,p2,p3){
        ....
        return array();
    }

    ... 

    con il suo routing può essere giusto? (i nomi delle azioni è solo per far capire) Anche perchè vorrei fare API utilizzabili non solo in curl ma anche con ajax e altro e non tutti supportano le chiamate DELETE E PUT

  4. #4
    beh, REST ha una filosofia ben precisa (sfruttare i metodi http e fornire una navigazione a link nelle api), quindi attento a come lo implementi, altrimenti non lo chiamerai piu alla fine "RESTful" ma semplicemente API.. cmq poco importa, tanto REST non è un protocollo :P

    Detto questo, gli entity framework servono appunto per mappare gli oggetti al database cercando di rendere gli oggetti i più indipendenti possibile dal database.

    searchAllAction/searchActionById/searchAction normalmente si implementano tranquillamente con entity frameworks, dal momento che sono fatti apposta. Certo, se hai bisogno di creare query dinamiche, le cose possono complicarsi notevolmente, ma generalmente con tali framework (leggiti ad esempio la documentazione di doctrine) puoi nel 90% dei casi sfruttare le api del framework per programmare sempre OO

    Non so se hai esperienza di Hibernate, ma il senso è lo stesso.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    8
    Per la creazione di query dinamiche non ho problemi, con il fatto di lavorare con WCF con annesso c# e linq, praticamente le mastico benissimo praticamente il mio intento è creare api che prendono spunto da REST per il fatto che sfrutta meglio l'http anche per le risposte (xml-json) ma anche creare metodi "ad-hoc" per ricerche oppure risposte parziali, così posso implementarle anche per il mobile

  6. #6
    Originariamente inviato da ms92ita
    Per la creazione di query dinamiche non ho problemi, con il fatto di lavorare con WCF con annesso c# e linq, praticamente le mastico benissimo praticamente il mio intento è creare api che prendono spunto da REST per il fatto che sfrutta meglio l'http anche per le risposte (xml-json) ma anche creare metodi "ad-hoc" per ricerche oppure risposte parziali, così posso implementarle anche per il mobile
    Proviamo a fare un esempio con la storia delle Action cui sopra:

    diciamo che l'uri è /api/actions

    una GET su /api/actions ritorna l'elenco di tutte le action presenti
    una GET su /api/actions?id=XX ritorna la descrizione dell'api id=XX
    una POST su /api/actions crea una nuova azione
    una PUT su /api/actions?id=XX modifica la action id=XX
    una DELETE su /api/actions?id=XX elimina la action id=XX

    se nella richiesta GET specifici altri parametri, ad esempio:
    /api/actions?param1=XX&param2=XX..&paramX=ZZ

    allora ritorni la lista di tutte le action che soddisfano i parametri passati. Se pensi di poter modellare tutto con questo stile, hai fatto il tuo webservice REST, altrimenti fai il tuo normalissimo webservice esponendo una serie di api e buonanotte a tutti Cmq c'è molta letteratura in giro, ad esempio mi sembra molto interessante questo articolo: http://www.ibm.com/developerworks/we...ry/ws-restful/
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.