搜尋套件、儲存庫與 APP 分類

套件詳情v1.0.5

pretty_http_logger

Pretty Http Logger 是一個用於 Dart HTTP 庫的中間件日誌庫,可將網路呼叫以美觀、易讀的格式記錄下來,並支援攔截網路呼叫。

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
4730
喜歡數
20
Pub 分數
150

安裝套件

flutter pub add pretty_http_logger

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

Pretty Http Logger 是一個 Dart 套件,可為 HTTP 網路請求和回應提供乾淨、易讀的格式。它與 Dart 的 HTTP 客戶端無縫整合,讓開發者能輕鬆監控和除錯 API 互動。該程式庫支援攔截網路呼叫,允許在開發過程中對請求和回應進行增強檢視和修改。支援所有主要平台——Android、iOS、Web、macOS、Windows 和 Linux,非常適合需要透明網路記錄的跨平台應用。

適用情境

  • 除錯 API 問題
  • 監控網路效能
  • 檢查請求/回應資料
  • 測試 API 集成
  • 增強開發工作流程
  • 在生產環境中的登入

主要特色

  • 格式化HTTP日誌
  • 請求/回應攔截
  • 跨平台相容性
  • 與 http 包輕鬆整合
  • 可自訂的日誌格式
  • 支援同步和非同步呼叫

適合對象

  • 開發跨平台應用的開發者
  • 需要詳細網絡調試的團隊
  • 前端工程師使用API
  • 測試人員驗證API行為
  • 需要透明網絡監控的應用程式

使用建議

  • 在生產環境中使用時,請勿忽略對敏感數據的過濾
  • 如果記錄過多資料,可能會影響效能
  • 需要正確配置以避免雜亂的日誌
  • 不適用於高頻率日誌記錄場景
  • 應在發佈版本中停用以確保安全

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

pretty_http_logger

A middleware logger library for Dart http library.

Getting Started

pretty_http_logger is a module that lets you log request and response for Dart's http package.

Installing

Include this library in your package.

pretty_http_logger: any
Importing
import 'package:pretty_http_logger/pretty_http_logger.dart';
Using pretty_http_logger

Create an object of HttpWithMiddleware by using the build factory constructor.

The build constructor takes in a list of middlewares that are built already by pretty_http_logger.

(You can also build your own middleware for pretty_http_logger. Check out Build your own middleware)
HttpWithMiddleware http = HttpWithMiddleware.build(middlewares: [
    HttpLogger(logLevel: LogLevel.BODY),
]);

That is it! Now go ahead and use this http object as you would normally do.

//Simple POST request
var response = await http.post('https://jsonplaceholder.typicode.com/posts/',
    body: {"testing", "1234"});

//Simple GET request
var response = await http.get('https://jsonplaceholder.typicode.com/posts/');

/// Simple Multipart Request
final request = MultipartRequest('POST', Uri.parse('YOUR_URL'));
request.fields['category_id'] = '1';
request.headers.addAll({'Authorization': 'YOUR_AUTH_TOKEN'});
final file = await MultipartFile.fromPath(
"images[0]",
"image_picker_632B42C0-11AF-4075-90F8-A7FCD48A7FC0-27133-0000014E3B2E5959.png",
contentType: MediaType("image", "jpg"),
);
request.files.add(file);
final response = await http.multipart(request);
Request Timeout

With pretty_http_logger you can also specify the timeout of requests. So if you want a request to be timeout in 30 seconds:

HttpWithMiddleware http = HttpWithMiddleware.build(
  requestTimeout: Duration(seconds: 30),
  middlewares: [
    HttpLogger(logLevel: LogLevel.BODY),
]);

HttpWithMiddleware supports all the functions that http provides.

http.get(...);
http.post(...);
http.put(...);
http.delete(...);
http.head(...);
http.patch(...);
http.read(...);
http.readBytes(...);
Using a Client

If you want to use a http.Client in order to keep the connection alive with the server, use HttpClientWithMiddleware.

HttpClientWithMiddleware httpClient = HttpClientWithMiddleware.build(middlewares: [
    HttpLogger(logLevel: LogLevel.BODY),
]);

var response = await httpClient.post('https://jsonplaceholder.typicode.com/posts/',
    body: {"testing", "1234"});

var response = await httpClient.get('https://jsonplaceholder.typicode.com/posts/');

//Don't forget to close the client once done.
httpClient.close();
Building your own middleware

Building your own middleware with pretty_http_logger is very easy, whether you want to create a package for pretty_http_logger or you want to build a middleware solely for your own project.

Once you have the necessary imports, all you have to do is extend the MiddlewareContract class which will give you access to 3 functions.

interceptRequest(RequestData) is the method called before any request is made. interceptResponse(ResponseData) is the method called after the response from request is received. interceptError(error) is the method called when an exception occurs.

You can then @override all the required functions you need to add middleware to.

Example (A simple logger that logs data in all requests):

class Logger extends MiddlewareContract {
  @override
  void interceptRequest(RequestData data) {
    print("Method: ${data.method}");
    print("Url: ${data.url}");
    print("Body: ${data.body}");
  }

  @override
  void interceptResponse(ResponseData data) {
    print("Status Code: ${data.statusCode}");
    print("Method: ${data.method}");
    print("Url: ${data.url}");
    print("Body: ${data.body}");
    print("Headers: ${data.headers}");
  }
  @override
  void interceptError(err) {
    print("Error: $err");
  }
}

You can also modify the RequestData before the request is made and every ResponseData after every response is received. For Example, if you want to wrap your data in a particular structure before sending, or you want every request header to have Content-Type set to application/json.

class Logger extends MiddlewareContract {
  @override
  void interceptRequest(RequestData data) {
    //Adding content type to every request
    data.headers["Content-Type"] = "application/json";
    
    data.body = jsonEncode({
      uniqueId: "some unique id",
      data: data.body,
    });
  }

  @override
  void interceptResponse(ResponseData data) {
    //Unwrapping response from a structure
    data.body = jsonDecode(data.body)["data"];
  }
  @override
  void interceptError(err) {
    print("Error: $err");
  }
}
Package pretty_http_logger is inspired by
  • pretty_http_logger(https://github.com/mithunadhikari40/pretty_http_logger) : Easy request and response logging.
  • pretty_http_logger is inspired by http_logger(https://github.com/gurleensethi/http_logger)
  • pretty_http_logger is inspired by http_middleware(https://github.com/TEDConsulting/http_middleware)
  • pretty_http_logger is inspired by pretty_dio_logger(https://github.com/Milad-Akarie/pretty_dio_logger)
  • pretty_http_logger is a combination of packages mentioned above and uses the code provided by these libraries and keeps everything up to date

If you find any issues or suggestions pretty_http_logger, open an issue or raise a PR, I will be happy to see.

所屬分類

依賴

依賴清單 1 項

原始碼儲存庫

使用此套件的專案