阅读(3837) (0)

Moralis http请求

2022-05-12 09:21:16 更新

Moralis.Cloud.httpRequest

Moralis Dapp​ 包括 ​Moralis.Cloud.httpRequest​。 它允许您向任何 HTTP 服务器发送 HTTP 请求。 此函数采用选项对象来配置调用。

一个简单的 GET 请求如下所示:

const logger = Moralis.Cloud.getLogger();

Moralis.Cloud.httpRequest({
  url: 'https://www.awesomewebsite.com/'
}).then(function(httpResponse) {
  // success
  logger.info(httpResponse.text);
},function(httpResponse) {
  // error
  logger.error('Request failed with response code ' + httpResponse.status);
});

Moralis.Cloud.httpRequest​ 返回一个promise,该promise将在成功的 HTTP 状态码上得到解决; 否则,promise 将被拒绝。 在上面的例子中,我们使用 then() 来处理这两个结果。

指定端口号的 GET 请求如下所示:

const logger = Moralis.Cloud.getLogger();

Moralis.Cloud.httpRequest({
  url: 'https://www.awesomewebsite.com:8080/'
}).then(function(httpResponse) {
  logger.info(httpResponse.text);
}, function(httpResponse) {
  logger.error('Request failed with response code ' + httpResponse.status);
});

有效端口号为 80、443 以及从 1025 到 65535 的所有数字。

默认情况下,​Moralis.Cloud.httpRequest​ 不遵循由 HTTP 3xx 响应代码引起的重定向,可以使用 ​followRedirects: true​ 选项。

const logger = Moralis.Cloud.getLogger();

Moralis.Cloud.httpRequest({
  url: 'https://www.awesomewebsite.com/',
  followRedirects: true
}).then(function(httpResponse) {
  logger.info(httpResponse.text);
}, function(httpResponse) {
  logger.error('Request failed with response code ' + httpResponse.status);
});

查询参数

您可以通过在选项对象上设置参数来指定要附加到 URL 末尾的查询参数。 您可以传递键值对的 JSON 对象,例如:

const logger = Moralis.Cloud.getLogger();

Moralis.Cloud.httpRequest({
  url: 'http://www.google.com/search',
  params: {
    q : 'Sean Plott'
  }
}).then(function(httpResponse) {
  logger.info(httpResponse.text);
}, function(httpResponse) {
  logger.error('Request failed with response code ' + httpResponse.status);
});

或者,像这样的原始String:

const logger = Moralis.Cloud.getLogger();

Moralis.Cloud.httpRequest({
  url: 'http://www.google.com/search',
  params: 'q=Sean Plott'
}).then(function(httpResponse) {
  logger.info(httpResponse.text);
}, function(httpResponse) {
  logger.error('Request failed with response code ' + httpResponse.status);
});

设置标题

您可以通过设置选项对象的标头属性来发送 HTTP ​header​。 假设你想设置请求的 Content-Type,你可以这样做:

const logger = Moralis.Cloud.getLogger();

Moralis.Cloud.httpRequest({
  url: 'http://www.example.com/',
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  }
}).then(function(httpResponse) {
  logger.info(httpResponse.text);
}, function(httpResponse) {
  logger.error('Request failed with response code ' + httpResponse.status);
});

发送 POST 请求

您可以通过设置选项对象的方法属性来发送发布请求。 可以使用 body 设置 POST 的正文。 一个简单的例子是:

const logger = Moralis.Cloud.getLogger();

Moralis.Cloud.httpRequest({
  method: 'POST',
  url: 'http://www.example.com/create_post',
  body: {
    title: 'Vote for Pedro',
    body: 'If you vote for Pedro, your wildest dreams will come true'
  }
}).then(function(httpResponse) {
  logger.info(httpResponse.text);
}, function(httpResponse) {
  logger.error('Request failed with response code ' + httpResponse.status);
});

这将向 ​http://www.example.com/create_post​ 发送一个带有正文的帖子,该正文是 URL 表单编码的正文属性。 如果您希望对正文进行 JSON 编码,则可以这样做:

const logger = Moralis.Cloud.getLogger();

Moralis.Cloud.httpRequest({
  method: 'POST',
  url: 'http://www.example.com/create_post',
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  },
  body: {
    title: 'Vote for Pedro',
    body: 'If you vote for Pedro, your wildest dreams will come true'
  }
}).then(function(httpResponse) {
  logger.info(httpResponse.text);
}, function(httpResponse) {
  logger.error('Request failed with response code ' + httpResponse.status);
});

为确保您的 HTTP 请求正文编码正确,请始终在您的内容类型标头中包含字符集。

后重定向

默认情况下,​Moralis.Cloud.httpRequest​ 不遵循由 HTTP 3xx 响应代码引起的重定向。 您可以使用 ​followRedirects ​选项更改此行为以遵循重定向:

const logger = Moralis.Cloud.getLogger();

Moralis.Cloud.httpRequest({
  url: 'http://www.example.com/',
  followRedirects: true
}).then(function(httpResponse) {
  logger.info(httpResponse.text);
}, function(httpResponse) {
  logger.error('Request failed with response code ' + httpResponse.status);
});

响应对象

传递给​success​和​error​的响应对象将包含:

  • status ​- HTTP 响应状态。
  • headers ​- 响应标头。
  • buffer ​- 响应正文的原始字节表示。
  • text ​- 原始响应正文。
  • data ​- 解析的响应,如果 Cloud Code 知道如何解析发送的内容类型。
  • cookies ​- 服务器发送的cookies。