Я пытаюсь сделать что-то простое, когда я делаю запрос от внешнего интерфейса и получаю данные JSON на внутреннем сервере. Я использую ReactJS на внешнем интерфейсе и NodeJS и ExpressJS на внутреннем.
Меня немного смущает мысль о том, как правильно получить доступ к данным JSON во внешнем интерфейсе, создав имя файла сервера имен из server.js или con.now.
Я получаю в своей консоли не отказался подключить ссылку на сервер. Я пытался назвать файл от server.js
до cors.now
, который соединял бы сервер с внешним интерфейсом, но я ошибся.
Failed to load resource: net::ERR_CONNECTION_REFUSED
Но когда все это делают, в моей консоли появляется сообщение об ошибке, в котором говорится о cors.now.sh/https://us-central1-aaronklaser-1.cloudfunctions.net/medium?username=@aaron.klaser
Medium.js
<code>import React from 'react';
import PageHeader from './PageHeader';
import PageContent from './PageContent';
import axios from 'axios';
export default class Medium extends React.Component {
state = {
posts: []
}
componentDidMount() {
this.fetchPosts().then(this.setPosts)
}
fetchPosts = () => axios.get(`https://cors.now.sh/https://us-central1-aaronklaser-1.cloudfunctions.net/medium?username=@aaron.klaser`)
setPosts = response => {
this.setState({
posts: response
})
}
render() {
return (
<div>
<PageHeader/>
<PageContent>
<pre>{JSON.stringify(this.state.posts, null, 2)}
)
}
}
cors.now
const express = require('express');
const app = express();
const port = process.env.PORT || 5000;
const request = require('request');
app.get("/api/medium", (req, res) => {
if(!req.query.username){
return res.status(400).send('Error: You need to include query param ?username=@yourUsername');
} else {
return request(url,(error, response, body) => {
const url = `https://medium.com/${req.query.username}/latest?format=json`;
const prefix = `])}while(1);</x>`
const strip = payload => payload.replace(prefix, ``)
res.send(JSON.parse(strip(body)));
});
}
});
app.listen(port, () => console.log(`Listening on port ${port}`));