Nel mio progetto utilizzando la metodologia DDD.Rest API e DDD
Il progetto ha l'offerta aggregata (entità). Questo aggregato ha molti casi d'uso.
Per questo aggregato ho bisogno di creare un api di riposo.
Con standard: creare ed eliminare nessun problema.
1) CreateDealUseCase (nome, prezzo e molti altri parametri);
POST /rest/{version}/deals/
{
'name': 'deal123',
'price': 1234;
'etc': 'etc'
}
2) DeleteDealUseCase (id)
DELETE /rest/{version}/deals/{id}
ma cosa fare con il resto dei casi d'uso?
- HoldDealUseCase (id, ragione);
- UnholdDealUseCase (id);
- CompleteDealUseCase (id e molti altri parametri);
- CancelDealUseCase (id, amercement, reason);
- ChangePriceUseCase (id, newPrice, reason);
- ChangeCompletionDateUseCase (id, newDate, amercement, whyChanged);
- ecc (casi di utilizzo 20 totali) ...
Quali sono le soluzioni?
1) Utilizzare i verbi:
PUT /rest/{version}/deals/{id}/hold
{
'reason': 'test'
}
Ma! I verbi non possono essere utilizzati nell'URL (nella teoria REST).
2) utilizzare lo stato completato (che sarà dopo il caso d'uso):
PUT /rest/{version}/deals/{id}/holded
{
'reason': 'test'
}
Personalmente per me sembra brutto. Forse sto sbagliando?
3) Uso 1 richiesta PUT per tutte le operazioni:
PUT /rest/{version}/deals/{id}
{
'action': 'HoldDeal',
'params': {'reason': 'test'}
}
PUT /rest/{version}/deals/{id}
{
'action': 'UnholdDeal',
'params': {}
}
E 'difficile da gestire nel backend. Inoltre, è difficile da documentare. Poiché 1 azione ha molte diverse varianti di richieste, da cui dipende già da risposte specifiche.
Tutte le soluzioni presentano notevoli inconvenienti.
Ho letto molti articoli sul REST su Internet. Ovunque solo una teoria, come essere qui con il mio problema specifico?
Non voglio dire quanto segue come risposta, quindi forse gli altri possono dare la loro opinione nel caso in cui sia una pessima idea. Che ne dici: '/ rest/{version}/dealsheld /', '/ rest/{version}/dealscompleted/{id}', ecc. Dal momento che uno dovrebbe sapere in quale stato si sta affrontando in ogni caso. Uno schema del genere avrebbe senso? –