2014-10-22 17 views
8

Questa è la firma per oneUrl funzione: oneUrl(route, url)
E dalla documentazione:
Qual è l'uso di 'percorso' nelle funzioni Restangular oneUrl() e allUrl()

oneUrl (percorso, url): Ciò creerà un nuovo oggetto Restangular che è solo un puntatore a un elemento con l'URL specificato.

Per me, sembra inutile impostare Route quando si invia un URL per la risorsa. Perché esiste nella lista degli argomenti? Perché è obbligatorio? E come può essere usato?

risposta

6

Nel mio utilizzo di oneUrl ho trovato che il nome della route viene utilizzato per creare l'URL per le successive operazioni PUT e DELETE. Ad esempio (pseudo codice):

// "GET /api/v2/users/3/ HTTP/1.1" 200 184 
var user = Restangular.oneUrl('myuser', 'http://localhost:8000/api/v2/users/3').get(); 
user.name = 'Fred'; 
// the following uses the route name and not the URL: 
// "PUT /api/v2/myuser HTTP/1.1 404 100 
user.put(); 

Sono rimasto sorpreso da questo comportamento. Mi aspettavo che put() usasse lo stesso URL di get(); che sarebbe utile nel mio caso.

La mia API utilizza URL assoluti all'interno dei payload JSON per navigare a tutte le risorse correlate e volevo utilizzare le istanze oneUrl() a GET/PUT senza ricreare le rotte nel codice JS. Ma sono abbastanza nuovo per il Restangular, quindi potrei non avere il modello mentale corretto.

+1

Esattamente! Secondo la mia comprensione del design REST, le risposte dovrebbero essere auto-descrittive e contenere collegamenti ad altre risorse se necessario. E a causa di ciò, 'oneUrl' è uno dei metodi di Restangular frequentemente usati per me! Che ne dici di passare l'url assoluto anche per 'route' ?! Non risolve il problema che hai menzionato? –

+0

@ AlirezaMirian divertente non ci ho nemmeno pensato; sembrava "sbagliato" ... ma alla fine ha funzionato. Non stava generando l'url corretto perché anch'io non stavo specificando il selfLink come il mio campo 'url'. Grazie per l'idea. – saschwarz

Problemi correlati