Gerarchia di modelli durante la progettazione di un client per un servizio RESTful

1

Sto cercando di scrivere un client per un servizio rilassante. Sono confuso nel progettare i modelli. Di seguito sono riportati i dettagli:

Ho un modello chiamato UnicastMessageRequest , la sua definizione è la seguente:

    public class/abstract-class/interface UnicastMessageRequest
    {
        public string tId { get; set; }
        public IDictionary<string, object> tVariables { get; set; }
        [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
        public CommunicationMedium communicationMedium { get; set; }
        public IList<MessageAttachment> messageAttachments { get; set; }
        public string to { get; set; }
    }

Non sono sicuro di fare di questa classe una classe concreta o una classe astratta o un'interfaccia, quindi ora ho scritto il tipo come class/abstract class/interface .

Questo modello sopra ha le proprietà che ho bisogno di inviare come corpo in una richiesta di post HTTP.

Ora, sto eseguendo diverse funzioni come sending email , sending SMS o sending WhatsApp message colpendo lo stesso endpoint HTTP che ha bisogno del modello UnicastMessageRequest di cui sopra come corpo della richiesta.

Quindi, per comodità, stavo pensando di scrivere modelli di dati Wrapper per Email request , WhatsApp request e SMS request .

proprietà come tId , tVariables communicationMedium e to è necessaria per tutto il corpo della richiesta, ma messageAttachment non è necessaria.

Esempio di un modello EmailRequest:

public class EmailRequest
{
    public string tId { get; set; }
    public IDictionary<string, object> tVariables { get; set; }
    [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
    public CommunicationMedium communicationMedium { get; set; }
    public IList<MessageAttachment> messageAttachments { get; set; }
    public string to { get; set; }
}

Esempio di un modello SMSRequest:

public class EmailRequest
{
    public string tId { get; set; }
    public IDictionary<string, object> tVariables { get; set; }
    [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
    public CommunicationMedium communicationMedium { get; set; }
    public string to { get; set; }
}

Qui messageAttachments non è richiesto affatto. Allo stesso modo, ho un modello WhatsAppRequest . Tutti questi modelli di richiesta devono essere convertiti infine in UnicastMessageRequest in modo che possano chiamare un'API comune come:

SendUnicastMessage(UnicastMessageRequest request)

Come progettarlo nel modo migliore?

    
posta Amit Upadhyay 19.09.2018 - 11:04
fonte

0 risposte

Leggi altre domande sui tag