Как можно настроить прокси для отправки запросов через API?

Как настроить прокси для использования API из https://api.travelpayouts.com/v2/prices/latest?cur...? Я пытался настроить прокси, но получаю ошибку 404. Вот мой текущий код настройки прокси и запроса с помощью Axios:

```javascript
await axios
  .get('/v2/prices/latest', {
    params: {
      currency: 'rub',
      token: 'f00a222924dc37ebb550ab2f9ae92666',
    },
  })

import { createProxyMiddleware } from 'http-proxy-middleware'

module.exports = function (app: any) {
  app.use(
    '/v2',
    createProxyMiddleware({
      target: 'https://api.travelpayouts.com',
      changeOrigin: true,
    })
  )
}
```

Как я могу настроить прокси для данного API правильно, чтобы избежать ошибки 404 при запросе с локального хоста или других источников?
  • 19 января 2024 г. 19:08
Ответы на вопрос 1
Похоже, что ваш текущий код создаёт прокси-сервер для разработки, который перенаправляет все запросы с локального адреса, содержащего `/v2`, на удалённый сервер `https://api.travelpayouts.com`. Однако в сообщении об ошибке 404 указано, что запрашиваемый ресурс не найден. Это может быть связано с неверной конфигурацией прокси или неправильным URL запроса.

Сначала давайте удостоверимся, что ваша конфигурация работает корректно. Попробуйте внести следующие изменения в ваш текущий код:

1. Убедитесь, что вы делаете запрос к полному пути API, включая прокси-префикс.
2. Переключите запрос на полный URL вместо относительного пути при вызове `axios.get`.

```javascript
await axios.get('http://localhost:3000/v2/prices/latest', {
  params: {
    currency: 'rub',
    token: 'f00a222924dc37ebb550ab2f9ae92666',
  },
})
```

Этот код предполагает, что ваше локальное приложение работает на порту 3000. Если это не так, измените порт на тот, который используется в вашем приложении.

Также убедитесь, что вы вызываете `axios.get` внутри асинхронной функции и обрабатываете результаты с `await`.

Давайте также проверим вашу текущую конфигурацию прокси. Возможно вам нужно добавить путь `/v2/prices/latest` в вашу прокси-конфигурацию:

```javascript
const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/v2',
    createProxyMiddleware({
      target: 'https://api.travelpayouts.com',
      changeOrigin: true,
      pathRewrite: { '^/v2': '' }, // Обязательно, если ваш проксируемый путь отличается от пути API
    })
  );
};
```

Обратите внимание на опцию `pathRewrite`, которая уберёт `/v2` из пути запроса перед перенаправлением его на удалённый сервер. Удалите эту строку, если ваш проксируемый путь соответствует пути целевого API.

Если после выполнения этих действий у вас всё ещё возникает ошибка 404, вам потребуется убедиться, что API `https://api.travelpayouts.com/v2/prices/latest` доступно и что вы используете верные параметры для запроса. Проверьте, работают ли запросы к API напрямую (без использования прокси), используя инструменты вроде Postman или cURL.

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