# 与Ajax的不同
在支付、结算等信息敏感的场景,防止请求抓包是非常重要的安全保障措施。然而Web端基于XHR的HTTP请求往往不能很好地实现SSL安全证书策略,Native端却可以轻而易举实现这一需求。因此Http模块在App环境中将支持开启SSL证书策略,调用Galleon的Http请求方法,业务开发者并不需要关注如何实现两种请求的兼容策略。同时由于Galleon的Http方法是由原生客户端发起的,因此它将不会有请求跨域的问题。
另外,为支持后续App端实现离线化架构,网络请求需完全交给Native端来实现。Kreator会对Http模块进行兼容实现,保证业务开发者无需关注容器差异。
http模块支持回调函数风格的调用,也可以通过Promise使用,因此如果您的项目使用了Babel,可以直接通过Async函数处理异步请求的调用,无需进一步的封装处理。
# 调用方式
# Api域:
const http = kreator.http:
http模块仅提供一个方法:
http(params:HttpRequestOptions):Promise<HttpResponseOptions>
入参格式如下:
HttpRequestOptions = {
url: string // 请求接口的url
params?: object // params字段为JSONString形式传递给后端接口的参数,它将放置在body的param字段中
data?: object | null // data为FormData格式的请求参数体,也就是说,data中的字段与param是同层级的
method?: string // 请求形式,默认为get,支持get/post/jsonp。注意使用jsonp时,将会强制关闭原生请求
header?: object // 请求头,99%的情况下都不要传入这个参数,大概率会导致后端CORS跨域配置失效(由于Option预检被触发且校验不通过导致)
timeout?: number // 请求超时时间
withCredentials?: boolean // 是否传输Cookie,并允许进行CORS跨域验证。默认为true。
customRes?: boolean // SDK不采用任何方式验证返回数据的正确性,一概将返回值抛出
useNativeHTTP?: boolean // 是否开启App端的GaHttp请求,默认为不开启(原因后述)
nativeSSL?: boolean // 是否开启原生请求SSL证书加密,默认为不开启。注意:只有请求域名的HTTPS协议的接口才会生效。由于客户端自身Bug,它仅在App v5.0.8以上版本可用
isFormParams?: boolean // 入参是否为Form
jsonpCallback?: string | number // jsonp请求回调函数的前缀,默认为Kreator_
success?(res: HttpResponseOptions): void // 请求成功时执行Resolve
fail?(err: HttpResponseOptions): void // 请求失败,执行catch
complete?(res: HttpResponseOptions): void // 请求完成回调,即是说失败与成功都会执行
beforeSend?(req: HttpRequestOptions): void // 请求发起前的回调函数
}
HttpResponseOptions = {
code: string,
data: object | null,
msg: string
}
以下为一个参考栗子🌰 :
http({
url: 'https://testdetail.dmall.com/waredetail/main',
params: {
storeId: '108706',
skuId: '101253671',
moduleCodes: 'shipment,spec,tips,store,recommend,description',
longitude: 116.373205,
latitude: 39.816585,
},
data: {
source: '2',
d_track_data: true,
tempid: 'C94791451BB0000273C61DA019E01E76',
},
nativeSSL: false,
useNativeHTTP: true,
method: 'post',
timeout: 3000, // 请求超时时间
beforeSend(req) { // 请求发起前的回调函数
console.log('即将请求...');
},
success(res) { // 请求成功回调
alert(JSON.stringify(res));
console.log(res);
},
fail(err){ // 请求失败回调
alert(err)
console.log(err)
},
complate(res){ // 请求完成回调,即是说失败与成功都会执行
alert(res)
}
}).then((res) => { // 请求成功时执行Resolve
console.log(res);
}).catch((err) => { // 请求失败,执行catch
console.log(err);
});
← dLink协议列表 或许你应该知道... →