Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Web Services in PHP

  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    Web Services in PHP

    Salve ragazzi,

    stò creando un piccolo web services rest in php, e volevo alcune dritte.

    Fin'ora, ho fatto in modo che i messaggi vengono inviati e ricevuti sottoforma di JSON e in base al metodo della richiesta ($_SERVER['REQUEST_METHOD']) , richiamavo il metodo giusto.
    Esempio:

    codice:
    class Test{
       public function get(){
       }
       public function post(){
       }
       public function put(){
       }
       public function delete(){
       }
    }
    se la richiesta è fatta in POST, allora richiamo il metodo post() tipo:

    POST http://host/Test => richiamo il metodo post() della classe Test
    GET http://host/Test?request={json_request} => richiamo il metodo get() della classe Test

    le chiamate vengono fatte usando curl di PHP...

    secondo voi è corretto gestire così il tutto?

    Sinceramente vorrei gestire meglio la cosa...
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Mappare il controller/metodo alla richiesta è una questione di gusti, alcuni fanno come te, richiesta in "get" allora richiamo il metodo getAction del controller, richiesta in post allora richiamo postAction etc. Ma stai facendo tutto a mano o con qualche framework/libreria sotto?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Mappare il controller/metodo alla richiesta è una questione di gusti, alcuni fanno come te, richiesta in "get" allora richiamo il metodo getAction del controller, richiesta in post allora richiamo postAction etc.

    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    Ma stai facendo tutto a mano o con qualche framework/libreria sotto?
    Tutto a mano, non amo particolarmente i framework.. una buona parte l'ho fatta, però mi sorgeva un dubbio:

    Se creo tipo una semplice classe "Operation", che effettua le quattro operazioni ,sum,difference,product,division, non posso mica chiamare i metodi (post,get,put e delete), cioè, non sò se rendo l'idea . Inoltre rispettando i principi di archiettetura REST, ogni PATH deve corrisspondere univocamente ad un servizio, e se ho due metodi x e y che accettono entrambi 2 parametri, come faccio a mapparli??
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,509
    Quote Originariamente inviata da gaten Visualizza il messaggio
    Mappare il controller/metodo alla richiesta è una questione di gusti, alcuni fanno come te, richiesta in "get" allora richiamo il metodo getAction del controller, richiesta in post allora richiamo postAction etc.


    Tutto a mano, non amo particolarmente i framework.. una buona parte l'ho fatta, però mi sorgeva un dubbio:

    Se creo tipo una semplice classe "Operation", che effettua le quattro operazioni ,sum,difference,product,division, non posso mica chiamare i metodi (post,get,put e delete), cioè, non sò se rendo l'idea . Inoltre rispettando i principi di archiettetura REST, ogni PATH deve corrisspondere univocamente ad un servizio, e se ho due metodi x e y che accettono entrambi 2 parametri, come faccio a mapparli??
    ciao,
    ogni uri, in un ws di tipo rest, deve corrisponde ad "un'operazione che è possibile compiere su una risorsa".

    la risorsa deve essere per lo più un'entità del database (ad esempio libri).

    con le azioni tipiche di rest puoi

    POST - > aggiungere un libro
    PUT -> modificare un libro
    GET -> recuperare uno o più libri
    DELETE -> eliminare un libro o più


    quello che mi pare di capire ti serva è solo l'implementazione di un MVC (pattern) che è cosa ben diversa da un web service
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    No, il mio problema sorge quando devo creare il servizio,... io ho mappato metodi della richiesta con i nomi del servizio ... se nella richiesta ho get, richiamo il metodo get() del web service... però se ho una classe Boo, non credo di avere un metodo chiamao post per l'inserimento di un libro , ma bensi... addBook. Inoltre se ho altri metodi .. oltre ai classici per inserire, modificare e cancellare... ?? Tipo getLastBook ..(che restituisce l'ultimo libro inserito) e getBook(id) che prende in input l'id e restituisce un libro... entrambi dovrebbero essere mappati alla richiesta con metodo get... ma come?
    Con i sogni possiamo conoscere il futuro...

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,509
    Quote Originariamente inviata da gaten Visualizza il messaggio
    No, il mio problema sorge quando devo creare il servizio,... io ho mappato metodi della richiesta con i nomi del servizio ... se nella richiesta ho get, richiamo il metodo get() del web service... però se ho una classe Boo, non credo di avere un metodo chiamao post per l'inserimento di un libro , ma bensi... addBook. Inoltre se ho altri metodi .. oltre ai classici per inserire, modificare e cancellare... ?? Tipo getLastBook ..(che restituisce l'ultimo libro inserito) e getBook(id) che prende in input l'id e restituisce un libro... entrambi dovrebbero essere mappati alla richiesta con metodo get... ma come?
    quello che dici non ha molto senso. se devi operare sul libro devi chiamare il controller del libro che estende il controller principale deputato ad invocare i vari metodi (POST PUT DELETE GET)

    se la chiamata ti arriva in post allora avrai nel tuo controller del libro un action che si chiama create ( a add),

    qui dentro lavori con il model per inserire effettivamente il libro.

    il controller di base sarà lui deputato a capire che se request method == post allora chiama create.

    in merito al discorso get io ragionerei in questo modo

    se nell'uri è presente il parametro id allora chiedo una risorsa singola. se non c'è applico altri filtri
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


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 © 2024 vBulletin Solutions, Inc. All rights reserved.