【问题标题】:Proxy Api call with Express in React Js在 React Js 中使用 Express 进行代理 Api 调用
【发布时间】:2020-05-14 04:45:57
【问题描述】:

我正在从我的 react 应用程序中使用 api 的 fetch 方法。现在我想创建快速应用程序并从快速服务器路由这个 api 调用。 这部分 api 已修复:https://api.imgur.com/3/gallery/ 其余是用户选择的值。然后我创建这样的网址https://api.imgur.com/3/gallery/${section}/${sort}/${window}/${page}?showViral=${viral} 我根据用户选择以相同的方式使用 ${{section}} 和其他方式获取部分、排序、窗口、页面、病毒值传递,但默认情况下,如果用户没有从 UI 中选择任何一个过滤器,则分配每个参数。 .

现在我想要 https://api.imgur.com/3/gallery/ 快递并从下面的方法发送 /${section}/${sort}/${window}/${page}?showViral=${viral} 来表达和接收回复。

我在我的 react 应用中安装了 express。休息一下,我是新手,所以我无法配置。

这个 loadImage 方法在 react 组件中。 `

 createURL ()
{
 const { lastSection, lastSorting, lastWindow, page, viral } = this.state;
let url = `https://api.imgur.com/3/gallery/${section}/${sort}/${window}/${page}?showViral=${viral}`;

    this.loadImages(url);
}
    loadImages(iUrl) {
        let myHeaders = new Headers();
        myHeaders.append("Authorization", "Client-ID {{myid}}");

        let requestOptions = {
          method: "GET",
          headers: myHeaders,
          redirect: "follow"
        };
        fetch(iUrl, requestOptions)
          .then((res) => res.json())
          .then((json) =>
            this.setState({ dataList: json.data, loaded: true, showLoader: false })
          )
          .catch((error) => {
            console.log(error);
          });
      }

【问题讨论】:

    标签: javascript reactjs api express fetch


    【解决方案1】:

    您希望从 Express API 端点发送图像URL,而不是通过传递参数来构造它。那么,您需要做的就是:

    对于URLSearchParams,可以参考this link

    createURL ()
    {
        const { lastSection, lastSorting, lastWindow, page, viral } = this.state;
        let url = `/getImageURLS`;
    
        this.loadImages(url, { lastSection, lastSorting, lastWindow, page, viral });
    }
        loadImages(iUrl, params) {
            let URL = new URL(iUrl);
            URL.search = new URLSearchParams(params).toString();
    
            let myHeaders = new Headers();
            myHeaders.append("Authorization", "Client-ID {{myid}}");
    
            let requestOptions = {
              method: "GET",
              headers: myHeaders,
              redirect: "follow"
            };
            fetch(URL, requestOptions)
              .then((res) => res.json())
              .then((json) =>
                this.setState({ dataList: json.data, loaded: true, showLoader: false })
              )
              .catch((error) => {
                console.log(error);
              });
          }
    
    

    Express API 端点:

    let express = require('express');
    let router = express.Router();
    let app = express();
    app.use('/', router);
    app.listen('8080', () => console.log('listening on 8080'));
    router.get('/getImageURLS', (req, res) => {
        console.log(req.query); //shows query paramters sent
    
        // your logic 
    
        const obj = [];
        res.send(obj); // image url array to be sent
    });
    
    

    【讨论】:

    • 感谢您的帮助,但我只寻找快递代码,.. 如何在快递中创建 YOUR_EXPRESS_API_END_POINT
    • 我必须在公共或 react 内部创建 server.js 。同样在快速代码中,您编写了逻辑,但我希望将获取的数据发送以做出反应。在这一行中 ...then((json) => this.setState({ dataList: json.data, loaded: true, showLoader: false } )
    • getImageURLS 将被api.imgur.com/3/gallery替换
    • 这能回答你的问题吗?
    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2017-09-13
    • 1970-01-01
    • 2017-12-02
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多