Spring Tips: @Controllers: give HTTP a REST

preview_player
Показать описание
Hi, Spring fans! In this installment, we'll continue our exploration of @Controllers, and look at HTTP APIs and SSE with Spring. This time, we'll use Spring Webflux.

Рекомендации по теме
Комментарии
Автор

Please make a video about a more domain-centric API design, maybe with CQ(R)S.

In my experience, level 2 "REST" APIs are oftentimes just "database CRUD over HTTP", leading to leakage of implementation details into the public API of the service, which results between high coupling between a client and the server implementation, which is a malpractice in my opinion.
Despite that you loose semantic information about the actions performed in your system early on, as you push the usecases of the domain upwards, basically to the clients.

For example, what does a "PATCH /api/todo-items/3" mean? Has the TODOs title been changed? Has it been ticked of? Marked as irrelevant? Has someone been assigned to the task? A combination of these actions? Compare this with a more domain-centric command based API design, e.g. "POST /api/commands/tick-todo-item { id: 3 }".

I personally think the latter one is far more descriptive and does not loose the domain semantics early on.

Don't get me wrong here. I think a more resource based approach can be useful, e.g. for more "backing services", but the more an API is designed for a specific domain problem, that being "closer to the end users", the less REST is helpful in my opinion.

JentaroYusong
Автор

Umm... Sudden end. Where is the rest part?

zickzack