允许代理服务器接受随机数路由
Allow proxy server to accept random number routes
好的,因为 cors,我已经创建了一个代理服务器来连接到 supremenewyork.com。某些路由是静态的,如 /shop 或 /mobile_stock.json,但其他一些路由是动态的。在我转到 /mobile_stock.json 后,我从那里解析一个特定值,然后在下一个路由调用 /shop/${item_id}.json 中使用。但是当我通过我必须的代理服务器时,我得到 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);
}
}
}
这是我创建代理服务器的 server.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}`));
非常感谢任何帮助,已经取得了很大的进步并学到了很多东西。
在你的路线中你可以这样定义:
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);
}
)
});
好的,因为 cors,我已经创建了一个代理服务器来连接到 supremenewyork.com。某些路由是静态的,如 /shop 或 /mobile_stock.json,但其他一些路由是动态的。在我转到 /mobile_stock.json 后,我从那里解析一个特定值,然后在下一个路由调用 /shop/${item_id}.json 中使用。但是当我通过我必须的代理服务器时,我得到 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);
}
}
}
这是我创建代理服务器的 server.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}`));
非常感谢任何帮助,已经取得了很大的进步并学到了很多东西。
在你的路线中你可以这样定义:
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);
}
)
});