Progettazione di API interne Qt / C ++ per servizi Web leggermente simili

0

in mia richiesta Fornisco un wrapper Qt / C ++ a determinati servizi web basato sul software Danbooru. Fondamentalmente l'API avvolge una serie di chiamate REST e produce / analizza le risposte JSON per visualizzarle in un'applicazione.

Collegamenti all'origine che avvolge l'API Web:

La struttura di base di DanbooruService in questi file implica tenere traccia della "pagina" visualizzata, i filtri per visualizzare ciò che viene scaricato o meno e alcuni metodi che gestiscono il recupero dei risultati dall'API (cfr. getPostList , getPoolList nei link sopra).

Ora, a causa della storia di detto software web ci sono un certo numero di fork in giro, ciascuno con un'API leggermente diversa. Poiché quello che ho progettato ora funziona solo con due dei più popolari, ho pensato di implementare il supporto per gli altri. Uno dei problemi è che non tutte le API Web supportano tutte le operazioni.

E qui arriviamo alla domanda, che al momento è più sul design, che sulla programmazione corretta (ed è per questo che l'ho postata qui): quale sarebbe il modo "meno peggio" per farlo?

Questo è quello che sto provando in questo momento:

  1. Evita di racchiudere tutto in una singola classe poiché è già troppo complesso come lo è
  2. Rendi la classe *Service una classe base astratta con metodi di base che devono essere implementati nelle sottoclassi
  3. Aggiungi alla classe base e alle sottoclassi un enum che identifica le "capacità" di ciascun servizio

o

  1. Elimina completamente l'idea della classe base e utilizza classi diverse con funzionalità come il punto 2 sopra, ma non sono sicuro che faciliterebbe la complessità.

Al momento però sto usando alcuni URL hardcoded per le API, e sì, anche quelli cambiano tra le versioni.

Dati questi requisiti (posso fornire alcuni frammenti in linea, ma inserisco i collegamenti in quanto il codice è grande), quale sarebbe un buon progetto per rendere questo meno indulgente al mal di testa?

EDIT: Ho dimenticato di dire che nessuno di questo è pubblico, quindi posso rompere le cose come voglio.

    
posta Einar 10.08.2015 - 17:24
fonte

0 risposte

Leggi altre domande sui tag