API Rest et DDD

Dans mon projet à l'aide de DDD méthodologie.

Le projet a l'ensemble(entité) à Traiter. Cet agrégat a beaucoup de cas d'utilisation.

Pour cet agrégat j'ai besoin de créer une api rest.

Avec la norme: de créer et de supprimer sans problème.

1) CreateDealUseCase(le nom, le prix et beaucoup d'autres params);

POST /rest/{version}/deals/
{ 
   'name': 'deal123',
   'price': 1234;
   'etc': 'etc'
}

2) DeleteDealUseCase(id)

DELETE /rest/{version}/deals/{id}

Mais que faire avec le reste du cas d'utilisation?

  • HoldDealUseCase(id, de la raison);
  • UnholdDealUseCase(id);
  • CompleteDealUseCase(id, et beaucoup d'autres params);
  • CancelDealUseCase(id, amercement, de la raison);
  • ChangePriceUseCase(id, newPrice, de la raison);
  • ChangeCompletionDateUseCase(id, newDate, amercement, whyChanged);
  • etc(total de 20 cas d'utilisation)...

Quelles sont les solutions?

1) Utiliser les verbes:

PUT /rest/{version}/deals/{id}/hold
{ 
   'reason': 'test'
}

Mais! Les verbes ne peuvent pas être utilisés dans l'url(dans le RESTE de la théorie).

2) Utiliser le formulaire de l'état(qui sera après la le cas d'utilisation):

PUT /rest/{version}/deals/{id}/holded
{ 
   'reason': 'test'
}

Personnellement, pour moi, il semble laid. Peut-être que je me trompe?

3) Utilisation 1 METTRE de la demande pour toutes les opérations:

PUT /rest/{version}/deals/{id}
{ 
   'action': 'HoldDeal',
   'params': {'reason': 'test'}
}

PUT /rest/{version}/deals/{id}
{ 
   'action': 'UnholdDeal',
   'params': {}
}

Il est difficile à gérer dans le backend.
En outre, il est difficile de document. Depuis 1 action a de nombreuses variantes de la demande, à partir de laquelle dépend déjà des réponses spécifiques.

Toutes les solutions ont beaucoup d'inconvénients.

J'ai lu de nombreux articles sur le RESTE sur internet. Partout seulement une théorie, la façon d'être ici avec mon problème?

  • Je ne veux pas à déclarer ce qui suit à titre de réponse, alors peut-être que d'autres peuvent donner leur avis dans le cas où il est une idée terrible. Que diriez-vous: /rest/{version}/dealsheld/, /rest/{version}/dealscompleted/{id}, etc. Depuis, l'on a besoin de savoir quel état vous faites affaire avec dans tous les cas. Serait un régime tel que celui de sens?
InformationsquelleAutor stalxed | 2016-02-29