Web Service

17 views
Skip to first unread message

Danilo Eusepi

unread,
Mar 11, 2016, 1:41:42 AM3/11/16
to yii-it
Salve a tutti, ho implementato un web service per scrivere dei dati in una tabella seguendo questa guida e leggendo la documentazione di Yii.
Qualcosa non mi quadra, vi chiedo cortesemente se potreste dare uno sguardo alla guida che ho seguito per valutare se effettivamente c'è tutto o manca di qualche dettaglio che ne pregiudica il funzionamento.


Grazie

Fabrizio Caldarelli

unread,
Mar 11, 2016, 3:39:40 AM3/11/16
to yii...@googlegroups.com
Le uniche cose non segnalate nell'esempio sono:

- autenticazione;
- limitare l'accesso alle risorse tramite un semplice controllo, es. application-key, cioè una stringa inviata dal client e verificata sul server;

Per il resto a colpo d'occhio mi sembra ci sia tutto.

Il 11/03/16 07:41, Danilo Eusepi ha scritto:
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "yii-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a yii-it+un...@googlegroups.com.
Per postare in questo gruppo, invia un'email a yii...@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/yii-it.
Per altre opzioni visita https://groups.google.com/d/optout.

Danilo Eusepi

unread,
Mar 11, 2016, 9:07:55 AM3/11/16
to yii-it
Intendi dire un controllo preliminare tipo nome utente e password, se ok procedo con l'operazione richiesta?

Fabrizio Caldarelli

unread,
Mar 11, 2016, 9:10:16 AM3/11/16
to yii...@googlegroups.com
Si, esatto, per limitare l'accesso solo a determinati utenti.

Inoltre metterei comunque un filtro sulle azioni (soprattutto quelle pubbliche), in modo tale che non tutti possano interrogarle.

Del tipo, un parametro da passare nell'header, per esempio, chiamato "application-code", valorizzato come vuoi tu.

Così che se l'utente chiama:

http://www.example.com/rest/stores

non tutti possano interrogarla, ma solo quei client che passano nell'header una variabile di cui il server si aspetta un preciso valore.

Il 11/03/16 15:07, Danilo Eusepi ha scritto:

Danilo Eusepi

unread,
Mar 11, 2016, 10:16:46 AM3/11/16
to yii-it
Rispetto all'esempio dl link della guida io ho utilizzato l'applicazione basic e non l'advanced, c'è differenza?

Fabrizio Caldarelli

unread,
Mar 11, 2016, 10:17:48 AM3/11/16
to yii...@googlegroups.com
L'advanced offre la possibilità di separare i vari ambiti di utilizzo di un'app,
creando ad esempio frontend (per gli utenti finali), backend (per gli operatori) ed api (per l'accesso dall'esterno).

Il 11/03/16 16:16, Danilo Eusepi ha scritto:

Danilo Eusepi

unread,
Mar 11, 2016, 10:25:30 AM3/11/16
to yii-it
Ok, allora l'impostazione con la cartella api nella root dell'applicazione non è corretta!
Come dovrei impostare la struttura delle cartelle per inserire il mio controller e il model relativo alla tabella in cui devo andare a scrivere da remoto?

Fabrizio Caldarelli

unread,
Mar 11, 2016, 10:27:13 AM3/11/16
to yii...@googlegroups.com
Se ti scarichi il template "advanced" lui già ti crea tre sottoprogetti base, common, backend e frontend.

E' sufficiente clonare uno di questi per avere un punto di partenza.

Il 11/03/16 16:25, Danilo Eusepi ha scritto:

Danilo Eusepi

unread,
Mar 31, 2016, 6:00:33 AM3/31/16
to yii-it
Ho provato anche il progetto pubblicato nel tutorial nel link che segue, ma non riesco ad avere questa risposta in json, ma viene sempre aperta la pagina base del progetto. Che sia il file .htaccess che dirotta tutto li e non mi fa partire la chiamata api?

Gabriele Mazzotti

unread,
Mar 31, 2016, 7:18:52 AM3/31/16
to yii...@googlegroups.com
Ciao,

I passi che ho eseguito sono i seguenti:

ho preso il tuo progetto
l'ho messo dentro apache
creato il database usando le query del link della guida
modificato le impostazioni del db in common/config/main-local.php

e andando all'indirizzo http://localhost/advancedAPI/api/web/v1/countries il servizio rest mi risponde correttamente (in XML).

Tu cosa fai di diverso?

Inline images 1

Danilo Eusepi

unread,
Mar 31, 2016, 12:36:14 PM3/31/16
to yii-it
Sai qual'era il problema...aver configurato i virtualhost di apache come descritto nel tutorial.
Ora sono riuscito a far funzionare il progetto di test, a questo punto devo poter leggere i dati da una action di un'altro progetto e poter scrivere dei dati da remoto chiamando un'altra azione.

Danilo Eusepi

unread,
Apr 1, 2016, 9:30:01 AM4/1/16
to yii-it
Come faccio a far interagire l'api appena creata con il resto del mondo?
Non eseguo chiamate via ajax, posiamo il caso che dal mio progetto1 compilo il form e invio i dati all'indirizzo dell'api, in teoria credevo bastasse per inserire dei dati nella tabella, in realtà mi viene detto che i campi inviati in post con il form sono vuoti.
Per lo meno il sistema non accetta questo tipo di post, quindi come poter gestire le chiamate di create/update/delete e relativo controllo dei messaggi che vengono restituiti per il controllo dei dati o per la validazione?
Reply all
Reply to author
Forward
0 new messages