尝试使用url访问响应数据

时间:2018-07-01 03:19:58

标签: node.js reactjs express

我正在尝试一些简单的操作,即从前端发出请求并在后端获取JSON数据。我在前端使用ReactJS,在后端使用NodeJS和ExpressJS。

我对如何通过从server.js或con.now中命名服务器文件名来将JSON数据访问前端的正确方法感到困惑。

我进入控制台不是因为它拒绝将链接连接到服务器。我曾尝试将文件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

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)}</pre>
        </PageContent>
      </div>
    )
  }
}

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}`));

1 个答案:

答案 0 :(得分:0)

我看到您正在使用https://cors.now.sh网站作为反向代理。我不确定该网站目前是否正在运行?

如果您直接点击API端点(https://us-central1-aaronklaser-1.cloudfunctions.net/medium?username=@aaron.klaser)-我会看到有效的JSON响应返回到浏览器。

我认为问题在于反向代理站点当前未运行或没有响应。