mirror of
https://github.com/foss42/apidash.git
synced 2025-11-30 17:59:18 +08:00
har
Seamlessly convert Har Collection Format v1.2 to Dart.
Helps you bring your APIs stored in Har to Dart and work with them.
Currently, this package is being used by API Dash, a beautiful open-source cross-platform (macOS, Windows, Linux, Android & iOS) API Client built using Flutter which can help you easily create & customize your API requests, visually inspect responses and generate API integration code. A lightweight alternative to postman.
Usage
Example 1: Har collection JSON string to Har model
import 'package:har/har.dart';
void main() {
// Example 1: Har collection JSON string to Har model
var collectionJsonStr = r'''
{
"log": {
"version": "1.2",
"creator": {"name": "Client Name", "version": "v8.x.x"},
"entries": [
{
"startedDateTime": "2025-03-25T12:00:00.000Z",
"time": 100,
"request": {
"method": "GET",
"url": "https://api.apidash.dev",
"headers": [],
"queryString": [],
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:01:00.000Z",
"time": 150,
"request": {
"method": "GET",
"url": "https://api.apidash.dev/country/data?code=US",
"headers": [],
"queryString": [
{"name": "code", "value": "US"}
],
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:02:00.000Z",
"time": 200,
"request": {
"method": "GET",
"url":
"https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
"headers": [],
"queryString": [
{"name": "num", "value": "8700000"},
{"name": "digits", "value": "3"},
{"name": "system", "value": "SS"},
{"name": "add_space", "value": "true"},
{"name": "trailing_zeros", "value": "true"}
],
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:03:00.000Z",
"time": 300,
"request": {
"method": "POST",
"url": "https://api.apidash.dev/case/lower",
"headers": [],
"queryString": [],
"bodySize": 50,
"postData": {
"mimeType": "application/json",
"text": "{ \"text\": \"I LOVE Flutter\" }"
}
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:04:00.000Z",
"time": 350,
"request": {
"method": "POST",
"url": "https://api.apidash.dev/io/form",
"headers": [
{"name": "User-Agent", "value": "Test Agent"}
],
"queryString": [],
"bodySize": 100,
"postData": {
"mimeType": "multipart/form-data",
"params": [
{"name": "text", "value": "API", "contentType": "text/plain"},
{"name": "sep", "value": "|", "contentType": "text/plain"},
{"name": "times", "value": "3", "contentType": "text/plain"}
]
}
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:05:00.000Z",
"time": 400,
"request": {
"method": "POST",
"url": "https://api.apidash.dev/io/img",
"headers": [],
"queryString": [],
"bodySize": 150,
"postData": {
"mimeType": "multipart/form-data",
"params": [
{"name": "token", "value": "xyz", "contentType": "text/plain"},
{
"name": "imfile",
"fileName": "hire AI.jpeg",
"contentType": "image/jpeg"
}
]
}
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
}
]
}
}
''';
var collection = harLogFromJsonStr(collectionJsonStr);
print(collection.log?.creator);
print(collection.log?.entries?[0].startedDateTime);
print(collection.log?.entries?[0].request?.url);
}
Example 2: Har collection from JSON
import 'package:har/har.dart';
void main() {
// Example 2: Har collection from JSON
var collectionJson = {
"log": {
"version": "1.2",
"creator": {"name": "Client Name", "version": "v8.x.x"},
"entries": [
{
"startedDateTime": "2025-03-25T12:00:00.000Z",
"time": 100,
"request": {
"method": "GET",
"url": "https://api.apidash.dev",
"headers": [],
"queryString": [],
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:01:00.000Z",
"time": 150,
"request": {
"method": "GET",
"url": "https://api.apidash.dev/country/data?code=US",
"headers": [],
"queryString": [
{"name": "code", "value": "US"}
],
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:02:00.000Z",
"time": 200,
"request": {
"method": "GET",
"url":
"https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
"headers": [],
"queryString": [
{"name": "num", "value": "8700000"},
{"name": "digits", "value": "3"},
{"name": "system", "value": "SS"},
{"name": "add_space", "value": "true"},
{"name": "trailing_zeros", "value": "true"}
],
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:03:00.000Z",
"time": 300,
"request": {
"method": "POST",
"url": "https://api.apidash.dev/case/lower",
"headers": [],
"queryString": [],
"bodySize": 50,
"postData": {
"mimeType": "application/json",
"text": "{ \"text\": \"I LOVE Flutter\" }"
}
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:04:00.000Z",
"time": 350,
"request": {
"method": "POST",
"url": "https://api.apidash.dev/io/form",
"headers": [
{"name": "User-Agent", "value": "Test Agent"}
],
"queryString": [],
"bodySize": 100,
"postData": {
"mimeType": "multipart/form-data",
"params": [
{"name": "text", "value": "API", "contentType": "text/plain"},
{"name": "sep", "value": "|", "contentType": "text/plain"},
{"name": "times", "value": "3", "contentType": "text/plain"}
]
}
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
},
{
"startedDateTime": "2025-03-25T12:05:00.000Z",
"time": 400,
"request": {
"method": "POST",
"url": "https://api.apidash.dev/io/img",
"headers": [],
"queryString": [],
"bodySize": 150,
"postData": {
"mimeType": "multipart/form-data",
"params": [
{"name": "token", "value": "xyz", "contentType": "text/plain"},
{
"name": "imfile",
"fileName": "hire AI.jpeg",
"contentType": "image/jpeg"
}
]
}
},
"response": {
"status": 200,
"statusText": "OK",
"headers": [],
"bodySize": 0
}
}
]
}
};
var collection1 = HarLog.fromJson(collectionJson);
print(collection1.log?.creator?.name);
print(collection1.log?.entries?[0].startedDateTime);
print(collection1.log?.entries?[0].request?.url);
}
Maintainer
License
This project is licensed under the Apache License 2.0.