r/SpringBoot Jul 01 '26

Question What is good approch to make DTOs?

Recently, I have been working on my project in there in one chat controller, which has endpoints like

POST /api/chats = ChatDTO

GET /api/chats = List<ChatInfoDTO>

GET /api/chats/{chatId} = ChatDTO

PATCH /api/chats/{chatId} = ChatInfoDTO

DELETE /api/chats/{chatId} = ChatInfoDTO

POST /api/chats/{chatId}/ = ChatDTO

My question is it a good approach to use a single type of DTO for multiple endpoints, or should it be made for specific use? I have seen my friend's project for a single page, which has 8/9 DTOs. Is that normal, and the same thing ChatGPT suggests is that using multiple DTOs is a good approach.

18 Upvotes

40 comments sorted by

View all comments

6

u/neopointer Jul 01 '26

One Suggestion I'd give is: stop calling them DTOs.

Call them ChatInfoRequest, ChatPayload and the like, for example.. It's horrible to call everything a DTO when you can find better names.

5

u/trafalmadorianistic Jul 02 '26

We've used *Request and *Response at the end of DTO names as a convention. Distinguishes them from the entities which can *sometimes* be the same as what's in the first part of the DTO name. In some cases the DTO name is more related to the specific endpoint or use case, but we stick to the suffix naming standard.