Flutter网络请求日志插件curl_logger_dio_interceptor_modeck的使用
Flutter网络请求日志插件curl_logger_dio_interceptor_modeck的使用
一个用于Dio的Flutter curl命令生成器。

为什么?
有时你想要重放应用中发出的HTTP请求,或者想与你亲爱的后端开发人员共享。或者你只是喜欢CURL。
使用你的应用时,当遇到错误请求时,查看你的终端,复制并粘贴它,然后轻松地重新播放它!
特性
- 简单的GET/POST/DELETE/PUT请求日志记录
- 当数据可用时包含数据
- 可直接在Postman中使用
入门指南
_dio = Dio();
_dio.interceptors.add(CurlLoggerDioInterceptor());
根据你的需求,你还可以传递 printOnSuccess: true
来打印所有请求而不是仅打印错误的请求。
默认情况下,convertFormData
是 true
并将 FormData
转换为普通的 Map
,这样即使在使用 FormData
(例如文件上传)时也可以获得CURL表示。
完整示例Demo
以下是一个完整的示例,展示了如何使用 curl_logger_dio_interceptor_modeck
插件:
import 'package:curl_logger_dio_interceptor_modeck/curl_logger_dio_interceptor_modeck.dart';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(home: MyApp()));
}
class MyApp extends StatelessWidget {
late final Dio _dio;
MyApp({Key? key}) : super(key: key) {
_dio = Dio();
// 避免在生产环境中使用或自行承担风险!
if (!kReleaseMode) {
_dio.interceptors.add(CurlLoggerDioInterceptor(printOnSuccess: true));
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
ElevatedButton(
onPressed: () {
_dio.post('https://flutter.dev/some404',
options: Options(headers: {'Auth': 'SOME-TOKEN'}));
},
child: const Text('Run POST errored request'),
),
const SizedBox(height: 20),
const Text(
'After pressing the button, go in your terminal and copy the curl code. Paste it in your terminal. Tada ✨',
textAlign: TextAlign.center,
)
]),
));
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮。点击该按钮会触发一个POST请求,并在控制台中输出对应的CURL命令。你可以复制该CURL命令并在终端中运行以重现请求。
更多关于Flutter网络请求日志插件curl_logger_dio_interceptor_modeck的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter网络请求日志插件curl_logger_dio_interceptor_modeck的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
curl_logger_dio_interceptor
是一个用于 Flutter 的插件,它可以帮助你在使用 Dio 进行网络请求时,以类似 cURL
命令的格式打印请求日志。这对于调试和查看网络请求的详细信息非常有用。
使用步骤
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 curl_logger_dio_interceptor
依赖。
dependencies:
dio: ^4.0.0
curl_logger_dio_interceptor: ^0.0.1
然后运行 flutter pub get
来安装依赖。
2. 创建 Dio 实例并添加拦截器
在你的 Dart 代码中,创建一个 Dio
实例,并添加 CurlLoggerDioInterceptor
拦截器。
import 'package:dio/dio.dart';
import 'package:curl_logger_dio_interceptor/curl_logger_dio_interceptor.dart';
void main() async {
// 创建 Dio 实例
Dio dio = Dio();
// 添加 CurlLoggerDioInterceptor 拦截器
dio.interceptors.add(CurlLoggerDioInterceptor());
// 发起网络请求
try {
Response response = await dio.get('https://jsonplaceholder.typicode.com/posts/1');
print(response.data);
} catch (e) {
print(e);
}
}
3. 运行代码
当你运行这段代码时,Dio 会在控制台打印出类似 cURL
命令的日志,方便你查看请求的详细信息。
输出示例
假设你发起了一个 GET
请求到 https://jsonplaceholder.typicode.com/posts/1
,控制台会输出类似以下的内容:
curl -v -X GET "https://jsonplaceholder.typicode.com/posts/1" \
-H "accept: application/json" \
-H "content-type: application/json"
自定义日志级别
你可以通过设置 LogLevel
来调整日志的输出级别。LogLevel
有以下几种选项:
LogLevel.none
: 不输出任何日志LogLevel.basic
: 输出基本日志(默认)LogLevel.headers
: 输出请求头信息LogLevel.body
: 输出请求体和响应体
dio.interceptors.add(CurlLoggerDioInterceptor(level: LogLevel.body));
其他功能
- 请求体和响应体的格式化: 你可以通过设置
formatRequestBody
和formatResponseBody
来格式化请求体和响应体的输出。 - 自定义日志输出: 你可以通过设置
logger
来自定义日志的输出方式。
dio.interceptors.add(CurlLoggerDioInterceptor(
level: LogLevel.body,
formatRequestBody: true,
formatResponseBody: true,
logger: (String message) {
print('Custom Logger: $message');
},
));