Недавно мне поручили разработать приложение командной строки, использующее News API, где пользователю предлагается на выбор четыре варианта новостей, и он получает 10 лучших заголовков из выбранного источника.

Прежде чем мы пойдем дальше, я предполагаю, что кто-то знает фундаментальный javascript nodejs и что такое API.

Начало работы

Сначала мне пришлось установить модуль news-API с помощью npm. Для этого я набрал следующую команду:

npm install newsapi --save

News API имеет две основные конечные точки: 1. /v2/top-headlines, которая используется для получения заголовков из разных источников новостей, и 2. /v2/everything для всех новости и статьи из разных источников. Ключ API от News API требуется для авторизации и аутентификации при использовании конечных точек. Различные конечные точки имеют разные параметры запроса, поэтому вам, возможно, придется перейти к TopHeadlines для параметров запроса конечной точки TopHeadlines и Everything для параметров запроса конечной точки все. Эти параметры будут переданы как объект. Также важно отметить, что на каждый запрос есть ответ, который также является объектом.

поэтому после установки модуля создайте файл js и импортируйте модуль newsapi.

введите следующий код в файл js:

const NewsAPI = require('newsapi');
const newsapi = new NewsAPI('Your API Key');//Write your acquired API key in there.

Затем я использовал синхронный модуль readline для захвата пользовательского ввода. Для этого введите следующее в своем терминале в каталоге проекта:

var readlineSync = require('readline-sync');

Затем я использовал объявленную выше переменную для вызова метода readline.question(, который встроен (в модуль) для захвата пользовательского ввода, который будет предпочтительным источником новостей и ключевым словом.

var newsSource = readlineSync.question('Which news Source would you prefer?\n 1 For BBC news\n 2 For Fox News\n 3 For Aljazzera News\n 4. For BBC Sport News\n');
let chosenSource;
var keyword = readlineSync.question('Any keyword to search for? ');

Затем выбор пользователя назначается переменной selectedSource.

if(newsSource === '1'){
chosenSource = 'bbc-news';
}
else if(newsSource === '2'){
chosenSource = 'fox-news';
}
else if(newsSource === '3'){
chosenSource = 'al-jazeera-english';
}
else if(newsSource === '4'){
chosenSource = 'bbc-sport';
}
else{
console.log("Invalid Input\n");
process.exit()//exit application
}

Важно знать идентификаторы разных источников, которые будут использоваться в параметрах запроса. Эту информацию можно получить из источников.

Следующая процедура включала вызов функции newsapi.v2.topHeadlines(), которую я использовал для обращения к конечной точке /v2/top-headlines. Эта функция является асинхронной, что означает, что ее реализация включает использование промисов, функций обратного вызова или асинхронного ожидания. Я использовал функции обратного вызова.

Из TopHeadlines мы видим, что объект ответа — это объект объектов. Он имеет массив, который также содержит другие объекты, поэтому в случае успешного запроса наши статьи находятся в объекте ответа (наш результат) в массиве с именем article. Мы отображаем статьи в объекте ответа.

Обычно результатов много, поэтому цикл for используется для обхода объекта, чтобы получить все статьи из разных массивов статей и, следовательно, функцию articleArray. articleArray — это массив объектов, который содержит заголовок, описание и URL-адрес.

function articlesArray(el) {   //articlesarray is an array of objects
let article_names = [];
for (let i=0; i<el.length; i+=1) {
article_names.push(i+1 +"."+ el[i].title);
article_names.push(,el[i].description);
article_names.push(,el[i].url);
}
return article_names.join('\r\n');
}
newsapi.v2.everything({
sources: [chosenSource],
q: [keyword],
language: 'en',
pageSize: 10
}, function(error,result){
if(error){
console.log(error);
}
else{
if(result.totalResults != 0){ // if results exists search for keyword in results
console.log(articlesArray(result.articles)); // return article based on keyword
}
else
{
console.log("No results for that keyword within that time, or try again with the right spelling of the key word");
}
}
});

Затем вы можете запустить приложение в терминале

node filename.js

Вы только что создали приложение командной строки. !!

Андела Кампания «Женщины в технологиях»