Flutter前后端连接的一些注意

Flutter前后端连接的一些注意

1.前端接口使用

在http_config里将BASE_URL改成 *http://本地ip地址:8082/ssp*
在这里插入图片描述

本地ip地址 cmd→ipconfig→ipv4地址

在这里插入图片描述

在使用接口的文件中引入http_config和http_request(network包下,之前没有,现在有了)
在这里插入图片描述

在文件中直接使用,不要重复写BASE_URL了

HttpRequest.request("$BASE_URL/接口路径",

	method:接口方式,

	params:{

​	传递参数键值对

}).then((value){

​	对返回值value的处理

})

在这里插入图片描述

传递的数据最好用AesUtil.aesEncrypt()进行加密处理,需要引入Utils包下的AesUtil.dart

在这里插入图片描述

加密前后的数据

在这里插入图片描述

2.后端接口使用

后端接口的返回类型统一用Result

在这里插入图片描述
成功可以返回

Result.ok()//没有返回值

Result.ok(msg)//只返回提示消息

Result.ok(data)//只返回数据

Result.ok(data,msg)//返回数据和提示消息(之前没有,现在有了)

失败可以返回

Result.error(msg)//返回错误消息

Result.error(code,msg)//返回错误代码和错误消息

后端也有AesUtil来加密和解密,在utils包下
在这里插入图片描述
在这里插入图片描述

aesEncrypt是加密算法,aesDecrypt是解密算法,后端往前端传数据也可以进行加密。

后端向前端传消息和数据,尽量只传前端需要的数据,保护数据安全,防止数据泄露。

在这里插入图片描述

3.返回数据处理

后端传来的数据需要用jsonDecode解码,jsonDecode的参数类型是String,传来的数据要toString

在这里插入图片描述

接口返回数据和json解码数据

接口返回数据:{"success":true,"message":"登录成功","code":200,"result":{"id":1,"name":"jack","phone":"13512345678","password":"123456","sex":"男"},"timestamp":1626788909039}
json解码数据:{success: true, message: 登录成功, code: 200, result: {id: 1, name: jack, phone: 13512345678, password: 123456, sex:}, timestamp: 1626788909039}

在这里插入图片描述

用中括号[]来取json解码的数据,数据中用{}嵌套的数据需要用[]嵌套来取,如取data中的result中的phone

String phone = data['result']['phone'];

在这里插入图片描述
在这里插入图片描述

对返回的数据进行校验,需要状态码code为200即操作成功才能进行后续操作,否则就要提示错误,停止后续操作。
在这里插入图片描述

不要把接口的错误直接暴露给用户,封装一下提示一下“操作错误”就行


//http_request.dart文件
import 'package:dio/dio.dart';
import 'package:sui_shou_pai/Utils/storage_util.dart';

import 'http_config.dart';

class HttpRequest {
  // 1、创建DIO实例
  static BaseOptions baseOptions =
      BaseOptions(baseUrl: BASE_URL, connectTimeout: TIMEOUT);
  static final dio = Dio(baseOptions);

  // 2、发送76  网络请求
  static Future request(String url,
      {String method = 'get',
      Map<String, dynamic> params,
      dynamic data,
      String token}) async {
    // Options options = Options(method: method, headers: );
    Options options =
        Options(method: method, headers: {"token": token.toString()});
    // dio.options.method = method;
    // dio.options.baseUrl = BASE_URL;

    try {
      final result = await dio.request(url,
          queryParameters: params, options: options, data: data);
      String token = result.headers.value("token");
      if (token != null) {
        StorageUtil.setStringItem("token", token);
      }
      return result;
    } on DioError catch (err) {
      print("err:$err");
      throw err;
    }
  }

  // 3、封装下载
  void upLoad() {}
}
//http_config.dart文件
const BASE_URL = "http://ip地址:端口号";
const TIMEOUT = 5000;//连接超时
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值