Ho creato un back-end personalizzato in NodeJs utilizzando lo schema della catena di responsabilità in modo che il sistema possa essere facilmente esteso per gestire nuovi tipi di richieste senza modificare i RequestHandler esistenti.
Il problema è che ogni RequestHandler gestisce la generazione di una risposta in modo simile. Ognuno ha funzioni _sendErrorResponse e _sendSuccessResponse. Funziona bene, ma c'è molta duplicazione del codice e limita ciò che posso fare con l'impostazione dei codici di stato. Di seguito è riportato un esempio di codice:
_sendSuccessResponse(res){
return (content) => {
res.statusCode = content.statusCode;
res.write(JSON.stringify(content));
res.end();
}
}
_sendErrorResponse(res){
return (content) => {
res.statusCode = 400;
res.write(JSON.stringify(content),(err) => {
res.end();
});
}
Il mio primo pensiero è stato quello di aprire le due funzioni nella classe genitore RequestHandler. Questo risolverebbe il problema della duplicazione del codice, ma non mi avrebbe permesso molta libertà nell'impostare i codici di stato. Dovrei leggere il contenuto della risposta e quindi impostare il codice di stato in base al contenuto. Il problema con questo è che accoppia il testo della risposta al gestore. Idealmente, vorrei mantenere il testo della risposta in un unico posto (dove il contenuto / o l'errore è effettivamente fatto)
Qualcuno conosce qualche schema che potrebbe risolvere questo problema?