場景
利用Flutter開發一個電商類的App,電商系統選擇開源電子商城Ecmall,Ecmall移動端API利用UniConnector生成。調用前需要進行Token認證,認證通過可訪問訂單、發貨單等。
第一步 在Flutter應用中,創建Dio實例
Dio dio = new Dio; // 使用默認配置
// 配置dio實例
dio.options.baseUrl="http://d.uniconnector.com/ecmall/v1"
dio.options.connectTimeout = 5000; //5s
dio.options.receiveTimeout=3000;
// 或者通過傳遞一個 options來創建dio實例
Options options= new Options(
baseUrl:"https://d.uniconnector.com/ecmall/v1",
connectTimeout:5000,
receiveTimeout:3000
);
Dio dio = new Dio(options);
第二步 設置調用Ecmall RestFul Api的Token
dio.interceptor.request.onSend = (Options options) {
options.headers["X-UniConnector-Api-Key"] = "d3a124f1-bd1f-1ea0-aac0-2b658e1dcxxx";
return options;
}
采用攔截器機制,在所有請求之前給Header增加Token,以便進行身份認證。
第三步 調用Ecmall 訂單的RestFul Api
1.獲取用戶Id為15 的所有訂單
Response response = await dio.get("/ecm_order?filter={ 'where' : { 'buyer_id' : '15'}}")
print(response.data.toString());
2.獲取商鋪id為22的所有商品
Response response = await dio.get("/ecm_goods?filter={ 'where' : { 'store_id' : '22'}}")
print(response.data.toString());
3.發布一個"Oral-B電動牙刷"商品
FormData formData = new FormData.from({
"store_id": 22,
"goods_name": "Oral-B電動牙刷",
"description": "Oral-B電動牙刷描述信息 ",
"price": 128.00,
"...":"..."});
Response response = await dio.post("/ecm_gods", data: formData);
print(response.data.toString());