Javascript 需要在使用谷歌云功能进行HTTP post请求时向我的URL添加值

Javascript 需要在使用谷歌云功能进行HTTP post请求时向我的URL添加值,javascript,node.js,google-cloud-platform,google-cloud-functions,Javascript,Node.js,Google Cloud Platform,Google Cloud Functions,我正在为基于react native的移动应用程序创建OTP类型的注册。通过使用谷歌云功能生成otp并向我的短信提供商发送http请求 我面临的问题是,每当我尝试使用${code}将随机代码添加到sms提供商url时,消息只会显示相同的${code},而不是随机生成的代码 换句话说,我不知道如何插入代码到我的网址,因为我是一个新手 这是我的随机数代码: const code = Math.floor((Math.random() * 8999 + 1000)); 我使用请求包的请求如下: co

我正在为基于react native的移动应用程序创建OTP类型的注册。通过使用谷歌云功能生成otp并向我的短信提供商发送http请求

我面临的问题是,每当我尝试使用${code}将随机代码添加到sms提供商url时,消息只会显示相同的${code},而不是随机生成的代码

换句话说,我不知道如何插入代码到我的网址,因为我是一个新手

这是我的随机数代码:

const code = Math.floor((Math.random() * 8999 + 1000));
我使用请求包的请求如下:

const options = {
    method: 'POST',
    uri: 'http://smsprovider.com/numbers=${numbers}&route=2&message=Your OTP is ${code}',
    body: {
        numbers: phone,
        code: code
    },
    json: true
};
所以,每当我收到一条消息,它就会说你的OTP是${code}。但我实际需要的是显示math.floor函数生成的随机数。预计你的OTP是5748


请指导

使用JavaScript进行字符串插值。请确保使用

`
字符代替

' 
请尝试以下方法:

const options = {
    method: 'POST',
    uri: `http://smsprovider.com/numbers=${numbers}&route=2&message=Your OTP is ${code}`,
    body: {
        numbers: phone,
        code: code
    },
    json: true
};
这是两种截然不同的范式,一种不能取代另一种

字符串插值允许您使用${}将变量的内容动态插入字符串。要使其起作用,您必须按照@Ben Beck的指示将字符串括在反引号之间。有些解释器会原谅你,这意味着即使你使用单引号,解释器仍然会用插值解析字符串,但是不是所有的解释器都这样做,依赖它是不好的做法。确保这些文件的格式正确

url组件编码将包含特殊字符的url参数转换为具有encodeURIComponent的有效uri组件。这就是如何去除空格和其他特殊字符的方法,但是这里可能不需要它,因为大多数浏览器都会为您这样做。当然要使用Chrome,但编写完全可移植的代码也是一种很好的做法,我建议对任何具有特殊字符的参数进行编码

您的邮递员测试失败的事实肯定是由于错误的请求。根据您的案例,申请工作邮递员职位,请利用

当直接使用代码而不是通过Postman进行测试时,如果继续使用文字${code}代替实际值,则可能意味着定义const code=Math.floorMath.random*8999+1000与插值调用不在同一范围内。根据您的案例,查看下面使用字符串插值和url编码的工作脚本示例:

const request = require('request');

const code = Math.floor((Math.random() * 8999 + 1000));

var p1 = encodeURIComponent(`Your OTP is ${code}`);
var uri = `http://smsprovider.com/?message=${p1}`;

const options = {
  method: 'POST',
  url: uri,
  json: true
};

function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body);
  }
  else {
      console.log(error);
  }
}

request(options, callback);
相同,但没有url编码,并且在body元素中嵌入了message参数:

var uri = `http://smsprovider.com/`;

const options = {
  method: 'POST',
  url: uri,
  body: {
    message: `Your OTP is ${code}`,
  },
  json: true
};

已更改并检查,现在出现错误:无法在postman中处理请求!,但没有更改为“from”,我从google云用户获取了phonefrom的get函数,并将其传递到url,但无法成功使用code@Arvindh,请确保您正在对URI进行编码。您可能在URI中有空格。作为一名新手,我的示例中有encodeURIComponent的示例吗?@Arvindh spaces?你是说留言后面的部分?实际上,它甚至可以使用空格,因为我收到了文本消息,但问题是我没有收到文本中的代码,而是收到了${code}