Разрешить прокси-серверу принимать маршруты с произвольным числом - PullRequest
0 голосов
/ 29 апреля 2020

Хорошо, поэтому я создал прокси-сервер для подключения к supremenewyork.com из-за cors. Некоторые маршруты являются stati c, как / shop или /mobile_stock.json, но некоторые другие маршруты являются динамическими c. После того, как я go перешел в /mobile_stock.json, я анализирую оттуда указанное значение c, которое затем использую в следующем вызове маршрута /shop/$ndomitem_id Event.json. Но когда я go через мой прокси-сервер, что мне нужно, я получаю 404. Этот item_id постоянно меняется. Любой способ сделать это, вот мой код:

const itemLink = `/shop/${desired_item_id}.json`;

    const itemPage = await helperFunctions.redirectTo(
        itemLink, 
        DELAY, 
        "Successfully connected to product page!", 
        "Error accessing Supreme site, retrying...");

Вот helperFunctions. js

const session = axios.create({
    baseURL: `http://botapi.supremenewyork.com:8050`,
  });

// timer function for delays
const timer = ms => new Promise( res => setTimeout(res, ms));

// function for simple get requests
const redirectTo = async (redirectLink, delay, successfullMessage, errorMessage) => {

    while(true){

        try{
            const getRedirect = await session.get(redirectLink);

            if(getRedirect.status === 200){
                if(successfullMessage != null){
                    console.log(successfullMessage);
                }
                await timer(delay);
                return getRedirect;
            }

            else {
                console.log(errorMessage)
                await timer(delay);
            }
        }

        catch(err){
            console.log(err);
            await timer(delay);
        }
    }
}

А вот мой сервер. js, который создает прокси-сервер :

const express = require('express');
const request = require('request');
const cors = require('cors');

const app = express();

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  next();
});

app.options('*', cors());

app.get('/', (req, res) => {
  request(
    { url: 'https://supremenewyork.com' },
    (error, response, body) => {
      if (error || response.statusCode !== 200) {
        return res.status(500).json({ type: 'error', message: error.message });
      }
      res.send(body);
    }
  )
});
app.get('/mobile_stock.json', (req, res) => {
  request(
    { url: 'https://supremenewyork.com/mobile_stock.json' },
    (error, response, body) => {
      if (error || response.statusCode !== 200) {
        return res.status(500).json({ type: 'error', message: error.message });
      }
      res.send(body);
    }
  )
});

const PORT = process.env.PORT || 8050;
app.listen(PORT, () => console.log(`listening on ${PORT}`));

Любая помощь очень ценится, добилась большого прогресса и выучила тонну.

1 Ответ

1 голос
/ 29 апреля 2020

В вашем маршруте вы можете определить так:

app.get('/:jsonfilename', (req, res) => {
  let jsonName = req.params.jsonfilename
  request(
    { url: 'https://supremenewyork.com/'+jsonName },
    (error, response, body) => {
      if (error || response.statusCode !== 200) {
        return res.status(500).json({ type: 'error', message: error.message });
      }
      res.send(body);
    }
  )
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...