Command/Query jako resource

0

Ciekawy filmik na temat łączenia cqrsa z restem. Co sądzicie?

1
  1. Że to nie ma nic wspólnego z Restem.
  2. Że można używać PATCH do częściowej aktualizacji zasobu
2

@Aventus: ciekaw jestem Twojej opinii na ten temat :) To z Twojego postu się dowiedziałem o tym kanale

Widziałem tamten filmik całkiem niedawno. Aleksander32 poszedł w dobrym kierunku, chociaż nie do końca. Wszystko tak naprawdę rozbija się o to jak zdefiniujemy REST. Wystarczy zobaczyć komentarze pod tym materiałem. Ja skłaniam się raczej ku temu że to już nie jest "czysty" REST, ale co z tego? Jeśli założymy że stosując konkretne podejście (np. właśnie CQRS) nie stosujemy REST, to nie ma w tym nic złego. Z jakiegoś dziwnego powodu przyjęło się że REST to jedyna słuszna wersja wystawiania web API. Wszystko zależy od scenariusza. Ja np. prawie nigdy ani zawodowo ani osobiście nie stosuję PATCH, szczególnie kiedy w grę wchodzi CQRS. Wtedy wszystkie commands lecą w POST. Rozdrabnianie się nad definicją tego co RESTem jest a co nie jest, oraz czy w danym przypadku należy go stosować lub też nie, jest bezproduktywne i niczemu tak naprawdę nie służy.

Tutaj, od wskazanego przeze mnie momentu Greg Young fajnie podsumowuje właśnie bezsens ślepego dogmatyzmu. A paradoksalnie jest osobą która można by o tenże dogmatyzm podejrzewać.

0

W tym artykule autor proponuje ciekawe podejście (sekcja Escaping CRUD). Można modelować komendy za pomocą rzeczowników, tzn. zamiast PUT /customers/:id/address mieć POST /address-changes i wtedy kontroler sobie "pod spodem" stworzy komendę ChangeCustomerAddress i wyśle do przetwarzania. W tym drugim przypadku urle są jednocześnie przyjazne, i jednocześnie wyrażają lepiej intencje. Wada jest taka, że w pewnych przypadkach te urle wyglądać będą dziwnie - np. POST /orders/:id/verify wygląda imo lepiej niż POST /order-verifications i pewnie wybrałbym pierwszą opcję.

1

REST obecnie jest już trochę przestarzały, nikt przecież nie tworzy zasobów od tak, tylko zazwyczaj stoi za tym jeszcze jakaś logika. Dlatego nie ma co się trochę rozczulać, że to nie był prawdziwy REST tylko używać co jest dostępne i działać. Przenosząc na CQRS imo nawet okej jest podeście gdzie
COMMAND - POST
QUERY - GET

1 użytkowników online, w tym zalogowanych: 0, gości: 1