Mi sto interrogando sull'adeguatezza dei parametri URL nella creazione di risorse RESTful.
Per prima cosa, ecco alcuni contesti. Sto lavorando su un'API che aggiornerà da remoto il software su dispositivi embedded collegati a un dispositivo cloud online. Il flusso di lavoro di base è:
- Scopri gli aggiornamenti disponibili
- Applica gli aggiornamenti desiderati
- Monitora l'avanzamento dell'aggiornamento
La risorsa di rilevamento degli aggiornamenti consentirà agli utenti di pubblicare un nuovo rilevamento degli aggiornamenti.
POST /updateDiscovery?apikey=a1b2c3
L'URL precedente attiverà il rilevamento degli aggiornamenti per tutti i dispositivi. È anche utile per limitare quali dispositivi sono destinati agli aggiornamenti. Esistono due identificatori utilizzati per limitare i dispositivi di destinazione:
- un ID dispositivo
- un ID di gruppo (che può fare riferimento a molti dispositivi)
Questa restrizione può essere comunicata utilizzando i parametri URL o il corpo della richiesta.
Utilizzo dei parametri URL:
POST /updateDiscovery?deviceIds=1,2,3&groupIds=2,3
Uso del corpo della richiesta:
POST /updateDiscovery
Content-Type: application/json
{
targets: {
deviceIds: [1, 2, 3],
groupIds: [3, 4]
}
}
In ogni caso, verrà creata una nuova risorsa con la seguente rappresentazione:
{
id: 1,
targets: {
deviceIds: [1, 2, 3],
groupIds: [3, 4]
},
status: 'pending',
...
}
Quale dei metodi sopra indicati segue al meglio il modello di progettazione RESTful e perché?