Я думаю, что проблема в строке кода ниже
options.path += '/' + language_code + '/' + word + '?fields=definitions' +
'&strictMatch=true';
Итак, впервые, когда вы делаете вызов API и передаете параметр как 'XYZ'
значение в option.path будет
/en-gb/xyz?fields=definition&strictMatch=true
Во второй раз, когда вы делаете вызов API и передаете параметр в виде 'PQR', значение в option.path будет
/en-gb/xyz?fields=definition&strictMatch=true/en-gb/pqr?fields=definition&strictMatch=true
Потому что вы делаете конкатенацию строк.
Возможное исправление может быть
app.get('/definition/:word', (req, res) => {
if (word !== req.params.word) {
console.log("If statement");
word = req.params.word;
console.log(word);
word = word.toLowerCase();
}
const options = {
host: 'https://od-api.oxforddictionaries.com',
port: '443',
path: '/api/v2/entries',
method: "GET",
headers: {
'app_id': process.env.APP_ID,
'app_key': process.env.APP_KEY,
}
};
options.path += '/' + language_code + '/' + word + '?fields=definitions' +
'&strictMatch=true';
let url = `${options.host}${options.path}`;
request(url, options, (error, response, body) => {
if (error) {
res.redirect('/error');
} else {
let statusCode = (response.statusCode);
console.log(statusCode);
if (statusCode === 200) {
let data = JSON.parse(body);
definition = String(data.results[0].lexicalEntries[0].entries[0].senses[0].definitions);
res.render('definition', {
wordTitle: word,
definitions: definition
});
} else {
res.redirect('/error');
}
}
});
});
Удалить параметр и URL, объявленные в строке 12 и 26