面试题答案
一键面试实现思路
- 请求拦截器:在发送HTTP请求之前,拦截请求并添加需要的请求头或进行其他预处理操作。
- 响应拦截器:在收到HTTP响应之后,拦截响应并进行错误处理或其他后处理操作。
关键代码片段
- 初始化HTTP客户端并添加拦截器
import 'package:dio/dio.dart'; void main() async { Dio dio = Dio(); // 添加请求拦截器 dio.interceptors.add(InterceptorsWrapper( onRequest: (Options options, RequestInterceptorHandler handler) { // 添加请求头 options.headers['Authorization'] = 'Bearer your_token'; return handler.next(options); }, )); // 添加响应拦截器 dio.interceptors.add(InterceptorsWrapper( onResponse: (Response response, ResponseInterceptorHandler handler) { if (response.statusCode! >= 400) { // 处理错误 throw DioError(requestOptions: response.requestOptions, error: 'Custom error handling'); } return handler.next(response); }, )); try { Response response = await dio.get('https://example.com/api/data'); print(response.data); } catch (e) { print('Error: $e'); } }
- 解释
- 请求拦截器:
onRequest
方法会在每次请求发送前被调用。在这里我们给options.headers
添加了Authorization
头信息,然后通过handler.next(options)
继续发送请求。 - 响应拦截器:
onResponse
方法会在每次收到响应后被调用。如果response.statusCode
大于等于400,我们抛出一个自定义的DioError
来处理错误,否则通过handler.next(response)
继续处理响应。
- 请求拦截器:
以上代码基于 dio
库,它是Flutter中常用的HTTP请求库,可用于在Flutter项目中方便地实现请求和响应拦截器。