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());//请求结果

示例二:调用GET请求的例子 ​

javascript
const req = {
    url: 'https://demo.api.com/api?a=zhangsan&b=lisi',
    method: 'GET',
    timeout: 1000,
}
const ctx = informat.http.request(req)
console.log(ctx.body(), '....') //请求结果
javascript
const req = {
    url: 'https://demo.api.com/api',
    method: 'GET',
    timeout: 1000,
    form: {
        a: 'zhangsan',
        b: 'lisi'
    }
}
const ctx = informat.http.request(req)
console.log(ctx.body(), '....') //请求结果

示例三:下载远程文件后,存储到本地沙盒环境 ​

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

示例四:下载远程文件后,存储到s3共享存储 ​

js
const req = {
    url: 'https://next.informat.cn/logo.png',
    followRedirect: true,
    maxRedirectCount: 10,
}
const rsp = informat.http.request(req);
rsp.saveBodyAsStorage('logo.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());

示例七:上传多个沙盒环境文件至第三方接口 ​

同一个字段名传路径数组时,会按相同的 multipart 字段名上传多个文件。

js
const req = {
    url: 'https://demo.api.com/api',
    method: 'POST',
    timeout: 5000,
    files: {
        files: [
            'demo-1.jpg',
            'demo-2.pdf',
        ]
    }
}
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());

示例九:上传多个文件共享存储文件至第三方接口 ​

同一个字段名传存储路径数组时,会按相同的 multipart 字段名上传多个文件。

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