最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何将云功能的自定义域用作POST请求

IT培训 admin 6浏览 0评论

如何将云功能的自定义域用作POST请求

我对Node.js的经验不是很熟悉,但学习快速的东西对javaScript来说都很好。我正在使用Cloud Functions为项目创建API,并尝试使用自定义域来访问此API。在我的Firebase托管上,我已连接子域“api.mydomain”。

我在函数index.js上使用express有一个名为“api”的函数:

let express = require('express');
let app = express();

app.post('/endpoint/:userId', (req, res) => {

  ... EXECUTE CODE 

  res.json(json);  

});

exports.api = functions.https.onRequest(app);

在我的firebase.json中,我有一个重写:

    "rewrites": [
  {
    "source": "/api/**",
    "function": "api"
  }

所以理论上如果我向/api/endpoint/userID发出POST请求应该执行该函数,但我得到:

无法POST / api / endpoint / userID /

如果我使用默认的firebase URL来访问像,它可以正常工作。

您是否有任何想法如何正确配置自定义域以使用我的功能?

非常感谢您的帮助!

回答如下:

当您使用Express应用程序作为HTTPS功能的目标时,该功能的名称将被添加到托管URL的路径之前,就像调用功能方向时一样。有两种方法可以弥补这一点:

  1. 将前缀路径放在路径路径中: app.post('/api/endpoint/:userId', (req, res) => { ... })
  2. 创建第二个Express应用程序,用于路由/ api下的所有内容,并将其发送到Cloud Functions: app.post('/endpoint/:userId', (req, res) => { ... }) const app2 = express() app2.use('/api', app) exports.api = functions.https.onRequest(app2)

无论哪种方式,当您将路径/api/**重写为函数api时,您的函数将被调用。

如何将云功能的自定义域用作POST请求

我对Node.js的经验不是很熟悉,但学习快速的东西对javaScript来说都很好。我正在使用Cloud Functions为项目创建API,并尝试使用自定义域来访问此API。在我的Firebase托管上,我已连接子域“api.mydomain”。

我在函数index.js上使用express有一个名为“api”的函数:

let express = require('express');
let app = express();

app.post('/endpoint/:userId', (req, res) => {

  ... EXECUTE CODE 

  res.json(json);  

});

exports.api = functions.https.onRequest(app);

在我的firebase.json中,我有一个重写:

    "rewrites": [
  {
    "source": "/api/**",
    "function": "api"
  }

所以理论上如果我向/api/endpoint/userID发出POST请求应该执行该函数,但我得到:

无法POST / api / endpoint / userID /

如果我使用默认的firebase URL来访问像,它可以正常工作。

您是否有任何想法如何正确配置自定义域以使用我的功能?

非常感谢您的帮助!

回答如下:

当您使用Express应用程序作为HTTPS功能的目标时,该功能的名称将被添加到托管URL的路径之前,就像调用功能方向时一样。有两种方法可以弥补这一点:

  1. 将前缀路径放在路径路径中: app.post('/api/endpoint/:userId', (req, res) => { ... })
  2. 创建第二个Express应用程序,用于路由/ api下的所有内容,并将其发送到Cloud Functions: app.post('/endpoint/:userId', (req, res) => { ... }) const app2 = express() app2.use('/api', app) exports.api = functions.https.onRequest(app2)

无论哪种方式,当您将路径/api/**重写为函数api时,您的函数将被调用。

发布评论

评论列表 (0)

  1. 暂无评论