Powiedzmy, że mam aplikację webową MVC i chcę dodać do niej REST API, z którym komunikowała by się np. aplikacja mobilna. Co w takim przypadku powinienem zrobić?
1) Stworzyć "kopie" każdego viewmodelu, zmienić nazwy z XViewModel
na XDto
i wyrzucić metadane dotyczące wyświetlania w widoku.
2) Serializować do JSONa istniejące viewmodele.
3) Nie używać nazw XViewModel,
tylko XModel
, i nie dodawać metadanych dotyczących wyświetlania - wtedy będzie można używać tych modeli i w MVC, i w Web API.
0
1
- Zastanowić się, czy aplikacja mobilna będzie potrzebowała tych samych danych, co webowa? Moim zdaniem niekoniecznie, więc trzeba i tak trzymać dwa oddzielne zestawy DTO. Czyli 1., ale też nie do końca - bo po co tam jakieś sufiksy
Dto
? RaczejRequest
iResponse
dla głównych obiektów, a dla podobiektów nic nie trzeba.
A jeśli naprawdę jest to to samo, to mi się wydaje, że w MVC jest taka możliwość, żeby jedna klasa to było takie DTO, a w drugiej mieć jakoś te wszystkie atrybuty dla prezentacji. Nie pamiętam, czy przez partial
, czy tam z czegoś było trzeba dziedziczyć i jakiegoś fluent API użyć. Ale dałbym rękę uciąć dowolnemu użytkownikowi, że tak się dało. ;)
5
somekind napisał(a):
Nie pamiętam, czy przez
partial
, czy tam z czegoś było trzeba dziedziczyć i jakiegoś fluent API użyć. Ale dałbym rękę uciąć dowolnemu użytkownikowi, że tak się dało. ;)
Zostawiam dla potomności ten sposób, bo nie łatwo go znaleźć
MetadataTypeAttribute Class
asp.net core jest trochę inaczej:
https://stackoverflow.com/questions/34576921/asp-net-core-metadatatype-attribute-not-working/37375987#37375987