Skip to content

informat.http http请求

概述

使用informat.http对象进行HTTP网络请求。通过统一的informat.http.request请求后拿到response对象。

INFO

  • 由于发起请求时可能会出现网络波动或被调用方服务异常导致调用失败,如常见404、502等HTTP状态码。 因此在调用后请先获取对应状态码后再做后续业务处理。

  • 部分调用服务后可能会重定向到另外一个网络地址,针对这种情况,可以在调用时将request对象中followRedirect设置为true来自动重定向到真正访问的网络地址,也可以在业务代码中自行处理

request

发送请求

javascript
informat.http.request(request)
参数类型描述
requestHttpRequest请求对象

返回值 类型HttpResponse 返回http请求的内容

示例

js
const req = {
  url:'https://demo.api.com/api',
  method:'POST',
  timeout:1000,
  form:{
    'p1':1,
    'p2':'str'
  }
}
informat.http.request(req)

Response

statusCode

HTTP状态码

js
response.statusCode()

返回值

类型Integer

body

内容

js
response.body()

返回值

类型String

headers

获取http请求头

js
response.headers()

返回值

类型Object<String,String>

contentEncoding

返回的内容编码方式

js
response.contentEncoding()

返回值

类型String

contentLength

返回的内容长度

js
response.contentLength()

返回值

类型Integer

saveBodyAsFile

保存文件到本地

js
response.saveBodyAsFile(path)
参数类型描述
pathString存储路径

saveBodyAsStorage

保存文件到文件存储

js
response.saveBodyAsStorage(path)
参数类型描述
pathString存储路径

saveBodyAsAttachment

保存为附件对象

js
response.saveBodyAsAttachment(tableKey, fieldKey, fileName)
方法类型描述
tableKeyString数据表标识符
fieldKeyString字段标识符
fileNameString文件名

示例一:调用POST请求的例子

js
const req = {
    url:'https://demo.api.com/api',
    method:'POST',
    timeout:1000,
    form:{
        'p1':1,
        'p2':'str'
    }
}
const rsp = informat.http.request(req);
console.log(rsp.body());//请求结果

示例二:调用请求后上传文件至本地沙盒环境

js
const req = {
    url:'https://demo.api.com/api',
    followRedirect: true,
    maxRedirectCount: 10,
}
const rsp = informat.http.request(req);
rsp.saveBodyAsFile('demo.png');

示例三:调用请求后上传文件至文件存储

js
const req = {
    url:'https://demo.api.com/api',
    followRedirect: true,
    maxRedirectCount: 10,
}
const rsp = informat.http.request(req);
rsp.saveBodyAsStorage('demo.png');

示例四:调用请求后上传文件至文件存储并保存为附件对象

js
let req = {
    url:'https://demo.api.com/api',
    followRedirect: true,
    maxRedirectCount: 10,
};
let rsp = informat.http.request(req);
const attachment = rsp.saveBodyAsAttachment('tableKey', 'fieldKey', 'demo.png');
// 保存为附件后 可以更新数据、插入数据等操作(tableKey与fieldKey需要保持一致)
const insertBean = {
    name: 'demo name',
    attachment: attachment,  // 如果是多选 需要用[] 包起来 例如: attachment: [attachment]
};
// 调用新增数据接口
informat.table.insert('tableKey', insertBean);

示例五:上传沙盒环境文件至第三方接口

js
const req = {
    url:'https://demo.api.com/api',
    method:'POST',
    timeout:5000,
    files: {
        file: 'demo.jpg'
    }
}
const resp = informat.http.request(req);
console.log(resp.statusCode());
console.log(resp.body());

示例六:上传文件存储文件至第三方接口

js
const req = {
    url:'https://demo.api.com/api',
    method:'POST',
    timeout:5000,
    storages: {
        file: 'demo.jpg'
    }
}
const resp = informat.http.request(req);
console.log(resp.statusCode());
console.log(resp.body());