Un lotto di operazioni viola i principi REST?

7

Violare i principi REST per un'API REST per supportare un batch di operazioni (magari con garanzie transazionali) che possono essere aggiunte a una coda tramite un POST?

Questo design sembra al di fuori dell'ambito dell'architettura REST ma non necessariamente in violazione di esso, ma sto cercando fonti autorevoli qui, e / o supporto spiegazioni quando / perché evitare o preferisco questo approccio.

Ad esempio, l'API Parse supporta un POST per creare un batch di richieste, ognuna delle quali rappresenta ciò che potrebbe essere una richiesta di REST separata, come la seguente (citazione):

curl -X POST \
  -H "X-Parse-Application-Id: ${APPLICATION_ID}" \
  -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
        "requests": [
          {
            "method": "PUT",
            "path": "/1/classes/GameScore/Ed1nuqPvcm",
            "body": {
              "score": 999999
            }
          },
          {
            "method": "DELETE",
            "path": "/1/classes/GameScore/Cpl9lrueY5"
          }
        ]
      }' \
  https://api.parse.com/1/batch
    
posta Will 14.02.2014 - 22:02
fonte

1 risposta

4

Da quello che ho letto questo non viola REST. REST ha a che fare con il modo in cui client e server comunicano tra loro; questa comunicazione deve essere stateless, cioè il client chiama il server e il server risponde, questo è tutto, ma ciò non significa che non ci sia stato coinvolto. REST riguarda anche la possibilità di indirizzare le risorse e le risorse sono / sono state.

Un esempio che ho letto (e vorrei ricordare dove dovrei collegarlo) riguardava le transazioni: si poteva fare un POST per creare una risorsa di transazione, quindi fare una serie di PUT per modificare / aggiornare quella transazione, quindi infine fare un commit (ho dimenticato quale verbo HTTP mappato a) per inviare la transazione. Tutte queste comunicazioni erano RESTful (non c'era stato di canale di comunicazione) ma c'era ancora stato in / come risorsa di transazione.

L'aggiunta di elementi a una coda di elaborazione en batch mi sembra analoga all'esempio di transazione.

Non ho fatto molte cose REST, ma questo mi sembra OK.

Alcune letture in qualche modo correlate per le parti interessate

    
risposta data 14.02.2014 - 22:35
fonte

Leggi altre domande sui tag