开发
API

tt.request

从基础库 1.0.0 开始支持,这是一个异步方法。

发起一个网络请求。网络相关的 API 在使用前需要配置域名白名单。请参考网络请求使用说明

语法

tt.request(options)

参数说明

options 为 Object 类型,属性如下:

属性名类型默认值必填说明最低支持版本
urlstring--请求地址1.0.0
headerobject{"content-type": "application/json"}请求 Header1.0.0
methodstringGET网络请求方法,支持 GET/POST/OPTIONS/PUT/HEAD/DELETE1.0.0
dataobject/array/arraybuffer--请求的参数1.0.0
dataTypestringjson期望返回的数据类型,支持 json、string1.0.0
responseTypestringtext期望响应的数据类型,支持 text 或 arraybuffer1.0.0
successfunction--接口调用成功后的回调函数1.0.0
failfunction--接口调用失败后的回调函数1.0.0
completefunction--接口调用结束后的回调函数(调用成功、失败都会执行)1.0.0

data 参数说明

传给服务器的数据最终会是 String 类型,如果 data 不是 String 类型,会被转换成 String 。转换规则如下:

  1. 如果数据类型是 string 或者是 arraybuffer,则直接返回该数据;
  2. 如果 header['content-type']application/x-www-form-urlencoded,会将数据转换成 query string: encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...,然后返回该数据。
  3. 如果 header['content-type']application/json,则会对数据进行 JSON 序列化,然后返回该数据。
  4. 如果数据类型是 object,则会对数据进行 JSON 序列化,然后返回该数据。
  5. 如果是其他情况,则直接调用数据的 toString(), 然后返回该数据。

referer 说明

网络请求 header 中的 referer 不可设置。 其固定格式为:https://tmaservice.developer.toutiao.com?appid={appid}&version={appVersion},其中 appid为小程序的 APPID,appVersion为小程序的版本号。

user-agent 说明

网络请求 header 中的 user-agent 不可设置。 其固定格式分为:

  • IOS 系统:[系统user-agent] [宿主标识]/[宿主app版本] ToutiaoMicroApp/[基础库版本] webview/[插件版本]
  • Android 系统:[系统user-agent] [宿主标识]/[宿主app版本] ToutiaoMicroApp/[基础库版本] PluginVersion/[插件版本]

回调成功

参数为 Object 类型,属性如下:

参数参数类型说明最低支持版本
statusCodenumber返回的 HTTP 状态码1.0.0
headerobject返回的 HTTP Response Header1.0.0
dataobject/string/arraybuffer返回的数据,类型取决于 dataType 和 responseType 参数1.0.0

回调失败

参数为 Object 类型,属性如下:

参数参数类型说明最低支持版本
errMsgstring错误信息1.0.0

返回值

RequestTask(网络请求任务对象),调用 tt.request 后返回的请求对象。

效果示例

扫码体验

请使用字节宿主APP扫码

代码示例

开发者工具中预览

【代码示例 1】:post 请求返回 dataType 为 json 类型的数据,并且可能会中断请求。

let task = tt.request({
  url: "someurl",
  data: {
    user_name: "hello",
  },
  header: {
    "content-type": "application/json",
  },
  method: "POST",
  dataType: "JSON", // 指定返回数据的类型为 json
  responseType: "text",
  success(res) {
    console.log("调用成功", res.data);
  },
  fail(res) {
    console.log("调用失败", res.errMsg);
  },
});

// 某些条件下中断请求
if (someReason) {
  task.abort();
}

【代码示例 2】:post 请求返回 dataType 为 string 类型的数据。

tt.request({
  url: "someurl",
  data: {
    user_name: "hello",
  },
  header: {
    "content-type": "application/json",
  },
  method: "POST",
  dataType: "string", // 指定返回数据的类型为 string
  responseType: "text",
  success(res) {
    console.log("调用成功", res.data);
  },
  fail(res) {
    console.log("调用失败", res.errMsg);
  },
});

【代码示例 3】:post 请求返回 responseType 为 arraybuffer 类型的数据。

tt.request({
  url: "someurl",
  data: {
    user_name: "hello",
  },
  header: {
    "content-type": "application/json",
  },
  method: "POST",
  dataType: "string", // 在 responseType 为arraybuffer的情况下,不起作用
  responseType: "arraybuffer", // 指定返回数据的类型为 arraybuffer
  success(res) {
    // 此处返回的res.data类型为 arraybuffer
    console.log("调用成功", res.data);
  },
  fail(res) {
    console.log("调用失败", res.errMsg);
  },
});

【代码示例 4】:post 请求 header['content-type'] 为 application/x-www-form-urlencoded。

tt.request({
  url: "someurl",
  data: {
    user_name: "hello",
  },
  header: {
    "content-type": "application/x-www-form-urlencoded", // 此处指定content-type类型,请确保传入的data 中的 key 和 value 都必须是string。
  },
  method: "POST",
  dataType: "json",
  responseType: "text",
  success(res) {
    console.log("调用成功", res.data);
  },
  fail(res) {
    console.log("调用失败", res.errMsg);
  },
});

【代码示例 5】:post 请求携带 cookie。

const id = "";
tt.request({
  url: "someurl",
  data: {
    user_name: "hello",
  },
  header: {
    "content-type": "application/json",
    cookie: "TOUTIAOID" + id, // 此处添加cookie
  },
  method: "POST",
  dataType: "json",
  responseType: "text",
  success(res) {
    console.log("调用成功", res.data);
  },
  fail(res) {
    console.log("调用失败", res.errMsg);
  },
});

【代码示例 6】:put 请求。

tt.request({
  url: "someurl",
  data: {
    user_name: "hello",
  },
  header: {
    "content-type": "application/json",
  },
  method: "PUT", // 此处修改请求方法
  dataType: "json",
  responseType: "text",
  success(res) {
    console.log("调用成功", res.data);
  },
  fail(res) {
    console.log("调用失败", res.errMsg);
  },
});

Bug & Tip

  • Tip:header 不支持设置 refereruser-agent 字段。
  • Tip:线上版本只支持 HTTPS 协议的请求,测试版同时支持 HTTP 和 HTTPS 协议,请注意提审版本中的协议配置。
  • Tip:在 header['content-type']application/x-www-form-urlencoded的情况下,请确保传入的 data 中,key 和 value 都是 string,否则容易出现解析不出来数据的问题。
点击纠错
评价此篇文档