Domanda

Ho un servizio con alcune entità che vorrei esporre in modo RESTful. A causa di alcuni dei requisiti che ho qualche difficoltà a trovare un modo che trovo bene.

Queste sono le operazioni 'normali' ho intenzione di supporto:

GET /rest/entity[?filter=<query>] # Return (matching) entities. The filter is optional and just a convenience for us CLI curl-users :)

GET /rest/entity/<id> # Return specific entity

POST /rest/entity # Creates one or more new entities

PUT /rest/entity/<id> # Updates specific entity

PUT /rest/entity # Updates many entities (json-dict or multipart. Haven't decided yet)

DELETE /rest/entity/<id> # Deletes specific entity

DELETE /rest/entity # Deletes all entities (dangerous but very useful to us :)

Ora, gli ulteriori requisiti:

  • Abbiamo bisogno di essere in grado di sostituire l'intero set di entità con un nuovo insieme di entità (la fusione può avvenire internamente come un'ottimizzazione).

    Ho pensato di utilizzare POST /rest/entity per questo, ma che eliminerebbe la possibilità di creare singole entità a meno che non mi muovo tale funzionalità. Ho visto percorsi / resto / ente / new-style in altri luoghi, ma è sempre sembrato un po 'strano per riutilizzare il segmento del tracciato ID per che, poiché non potrebbe o non potrebbe essere una collisione in ID (non nel mio caso, ma miscelazione spazi dei nomi del genere mi dà un prurito:)

    Ci sono pratiche comuni per questo tipo di operazione? Ho anche considerato /rest/import/entity come un percorso separato per le operazioni non riposanti simili per altri tipi di entità che potremmo avere, ma non mi piace muoversi al di fuori del percorso di entità casa.

  • Abbiamo bisogno di essere in grado di eseguire la maggior parte delle operazioni in un -mode "dry-run" per la convalida.

    Le stringhe di query sono di solito considerati un anatema, ma io sono già un peccatore per un filtro. Per la modalità di convalida, sarebbe l'aggiunta di un flag ?validate o ?dryrun essere ok? Hanno tutti fatto qualcosa di simile? Quali sono gli svantaggi? Questo è inteso come un aiuto per interfacce utente rivolto per implementare la convalida facilmente.

Non aspettatevi di dover utilizzare alcun meccanismo di caching come questo è un servizio di configurazione piccola raramente toccato, quindi l'ottimizzazione per il caching non è strettamente necessario

È stato utile?

Soluzione

  

Abbiamo bisogno di essere in grado di sostituire l'intero set di entità con un   completamente nuova di entitiescompletely nuova serie di entità

Questo è ciò che fa, no?

PUT /rest/entity

PUT ha sostituzione semantica. Forse si potrebbe utilizzare il PATCH verbo supporto fare gli aggiornamenti parziali.

Personalmente, vorrei cambiare il nome della risorsa di "EntityList" o "EntityCollection", ma questo è solo perché è più chiaro per me.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top