Akurat w tym wypadku można zrobić funkcję, która przyjmie 2 parametry: URL żądania oraz callback, któremu przekażemy zawartość odpowiedzi. Dodatkowe, opcjonalne ustawienia można schować w zmiennej options.Całość mogłaby wyglądać jakoś tak:
function getFromAPI( URL, callback, options = {} ) {
request( `${ urlAPI }/${ URL }`, { json: true }, function( err, res, body ) {
if ( err ) {
return console.log( 'Wystąpił błąd: ', err );
}
if ( res.statusCode !== 200 ) {
return console.log( options.httpError || `Wystąpił błąd HTTP ${ res.statusCode }` );
}
callback( body );
} );
}
i przykładowe wywołanie:
getFromAPI( `name/${name}`, function( body ) {
console.log( `Nazwa państwa: ${ body[ 0 ].name }\nStolica: ${ body[ 0 ].capital }\nWaluta: ${ body[ 0 ].currencies[ 0 ].symbol }\nLiczba ludności: ${ body[ 0 ].population }` );
}, {
httpError: 'Nie można wyświetlić informacji na temat kraju. Sprawdź URL.'
} );
Można sam callback również przerzucić do opcji, a można też wgl się go pozbyć, na rzecz Promise.