来自Github页面的HTTTP发布请求

问题描述 投票:2回答:1

我目前正在构建自己的网站,该网站托管在GitHub Pages上。该应用程序是使用React.js构建的,此处显示的是联系表单。我遇到的问题是我无法通过网站上的表单向具有云功能服务的google云平台发送POST请求。我知道GCP上的Node.js代码正在运行,因为我可以使用Postman发送请求。

使用GCP日志,该函数能够解析POST:GCP Success with Postman

GCP Failure from website

反应代码:

submitForm(event) {
        const {name, email, subject, message} = this.state;
        console.log("sending email...");
        console.log(JSON.stringify({
            name: name,
            email: email,
            subject: subject,
            msg: message
        }));
        fetch('GCP_API_HTTP', {
            method: 'POST',
            headers: {
                'content-type': 'application/json',
            },
            body: JSON.stringify({
                name: name,
                email: email,
                subject: subject,
                msg: message
            })
        }).then((response) => {
            if (response.status === 200) {
                return response.text();
            } else {
                this.setState({emailError: true});
                return response.text();
            }
        })
    }

GCP上使用的代码:

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey('API_KEY');

exports.contactMe = (req, res)=> {
  let jsonBody;

  switch (req.get('Content-Type')) {
    // '{"name":"John"}'
    case 'application/json':
      jsonBody = req.body;
      break;

    // 'John'
    case 'text/plain':
      jsonBody = req.body;
      break;

    // 'name=John' in the body of a POST request (not the URL)
    case 'application/x-www-form-urlencoded':
      jsonBody = req.body;
      break;
  }

  console.log(jsonBody);

    let msg = {
        to: '[email protected]',
        from: {
          email: jsonBody.email,
          name: jsonBody.name
        },
        subject: jsonBody.subject,
        text: jsonBody.msg
    };
    sgMail.send(msg);
    res.send("received!");
    res.end();
};
node.js reactjs post google-cloud-platform github-pages
1个回答
0
投票

了解GitHub Pages会发布您推送到存储库的所有静态文件非常重要。而且也很想注意...

GitHub Pages不支持服务器端语言,例如nodejs,python等。

由于POST请求需要服务器端通信,因此您需要获取实际的服务器主机。 Here's a good read about Static sites by GitHub Pages

© www.soinside.com 2019 - 2024. All rights reserved.