Pewnie jakiś Result<coś>
. Tylko czym ma być to coś? Jeśli mam MVC, to właściwie nie muszę nic zwracać - wystarczy odpalić SignInAsync
z Identity. Ale jeśli mam Api, to powinienem zwrócić jakieś CurrentUserInfo
z tokenem. Problem pojawia się, jeśli chcę mieć podział na warstwy i warstwa aplikacji nic nie wie o warstwie prezentacji. Co zwrócić wtedy?
0
1
Korzystasz z mediatR?. Bo jeśli tak to ja np z każdego handlera zwracam takie coś:
public class Response
{
private readonly IList<ErrorItem> _messages = new List<ErrorItem>();
public IEnumerable<ErrorItem> Errors { get; }
public object Result { get; }
public Response() => Errors = new ReadOnlyCollection<ErrorItem>(_messages);
public Response(object result) : this()
{
Result = result;
}
public Response AddError(ErrorItem errorItem)
{
_messages.Add(errorItem);
return this;
}
}
public class ErrorItem
{
public ErrorCodes Code { get; set; }
public string Description { get; set; }
}
i jak już logowanie w handlerze pójdzie ok to robię obiekt anonimowy z jakimis polami (JWT, Role ID itp) i potem z hendlera robię:
return new Response(obiektanonimowy)
Tak, wiem commendy nie powinny zwracać nic ale mam to gdzieś :P
A potem w controlerze w zalezności od tego czy są jakieś błędy czy nie, robię return Ok(response.Result) lub badRequest(response.Errors)
0
@szydlak Tylko że zwracanie obiektu z tokenem JWT uzależnia warstwę aplikacji od prezentacji ;( Nie żeby był to dla mnie jakiś duży problem, po prostu jestem ciekaw, jak powinno być "poprawnie". :P