Progettazione dell'API per le azioni (ciclo di vita, conversione, ecc.)

1

Come posso progettare una buona API REST per le azioni, come nei seguenti casi?

  • del ciclo di vita
    • avvia un dispositivo
    • interrompi un dispositivo
    • ...
  • conversioni
    • converti un file da un formato all'altro

In entrambi i casi userei sempre l'astrazione di ActionRequest , qualcosa del tipo:

url: api/device/1/start
metodo: GET o POST
body: StartRequest object ( quali proprietà? )

url: api/conversion/sourceFormat
metodo: POST
corpo: ConversionRequest oggetto e flusso di file

In entrambi i casi, comunque, non sto cambiando lo stato del server in ogni caso, e se va bene usare GET richieste in caso di lifecycle azioni, non è possibile conversioni dove ho bisogno di POST un file.

Qualche suggerimento?

    
posta fra 07.02.2017 - 09:31
fonte

2 risposte

2

Probabilmente non GET in questi casi, poiché GET deve essere sicuro

the client does not request, and does not expect, any state change on the origin server as a result of applying a safe method to a target resource. Likewise, reasonable use of a safe method is not expected to cause any harm, loss of property, or unusual burden on the origin server.

Come ti senti a proposito degli spider che chiamano il tuo punto di inizio del ciclo di vita? o i programmi utente recuperano in modo proattivo il punto di inizio del ciclo di vita nel caso in cui sia necessario?

I'm not changing the state of the server in anyway

È meno importante cambiare lo stato del server piuttosto che cambiare lo stato della risorsa .

  • lifecycle
    • start a device
    • stop a device

Quindi questi sono abbastanza semplici; pensa a come lo faresti con un sito web? Probabilmente ci sarebbe una pagina di stato per il dispositivo, con un hyper link su di esso che dice "Per avviare il dispositivo, invia questo modulo". Dovresti seguire il link al modulo e descrivere tutti i dati necessari per avviare il dispositivo, compilare il modulo e inviarlo e TADA, gli effetti collaterali sul dispositivo .

Le API REST funzionano esattamente allo stesso modo: leggi una rappresentazione di una risorsa, che si collega a una rappresentazione di una risorsa diversa che descrive come puoi cambiare la prima. Si invia il secondo documento e dietro l'API della scena è necessario modificare il primo.

Le API REST sono solo gigantesche burocrazie: tutto viene fatto inviando moduli. Hai bisogno di fornire qualche nuovo servizio? questa è una nuova forma.

    
risposta data 08.02.2017 - 15:01
fonte
1

Se hai azioni del ciclo di vita che devi esprimere su un'architettura REST, allora dai un'occhiata a Sun Cloud API per il controllo delle macchine virtuali e delle risorse cloud.

Simile al tuo esempio con l'avvio e l'arresto di un dispositivo, nell'API Sun Cloud puoi avviare una VM, basta una VM, ecc. .

Puoi prendere in prestito alcune idee da lì. È un'API relativamente semplice ed è anche basata su hypermedia.

    
risposta data 08.02.2017 - 13:25
fonte

Leggi altre domande sui tag