Sto provando a scrivere un client API REST per esercitarti e ho difficoltà a capire come si stende il progetto.
L'approccio che sto prendendo adesso ha Actions
, DomainObjects
, Requests
, e una classe che si occupa di autorizzazioni e intestazioni e tale ( CoreClient
) che espone un generico DoPut<T>(string address,T item)
e verbi simili .
Esempi
Action
: UpdateRecordCode
(contiene la logica)
DomainObject
: RecordCode
(entità)
Request
: UpdateRecordCodeRequest
(entità, contiene un ID record e un elenco di cose da aggiungere ad esso)
Domanda 1 : Come determinare quali classi devono implementare le interfacce e quali interfacce dovrei avere in primo luogo e quali dovrebbero ereditare?
La mia ipotesi migliore è che Actions
debba ereditare da un ActionBase
perché ogni Action
è fondamentalmente un tipo di ActionBase
. DomainObjects
dovrebbe probabilmente implementare qualcosa in modo che siano coerenti, ma non sono sicuro di cosa.
La parte più difficile è Requests
; idealmente, mi piacerebbe che altre parti dell'applicazione gestissero le richieste in generale, in modo tale che, nell'interfaccia utente, potessi avere un elenco di richieste che un utente potrebbe scegliere. Ho provato questo in entrambi i modi, ma continuiamo a tornare a una lezione concreta in quanto entrambi si sentono strani. Le interfacce, ad esempio, finiscono per dover dire qualcosa come IRequest<UpdateRecordCode<UpdateRecordCodeRequest>>
, il che sembra sciocco.
Domanda 2 : sto sbagliando? Mi sento come se tutti avessero scritto una dozzina di client API - Ho scritto un numero con una pianificazione minima - ma sto provando a farlo "bene" questa volta ed è, beh, difficile.
So che ci sono molti duplicati dell '"Interfaccia o classe astratta?" domanda, ma penso che questo sia distinto da quelli in quanto riguarda il modo in cui lavorano insieme piuttosto che semplicemente "X o Y?"