Moralis http请求
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。