Skip to content

haashem/http-client-contracts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HTTP Client Monorepo

Transport-agnostic HTTP contracts and concrete adapters for Dart and Flutter.

Packages

Package Purpose
http_client_contracts Core transport-agnostic contract (HttpClient, request/response models, exceptions).
http_client_dio dio adapter that implements HttpClient.
http_client_http package:http adapter that implements HttpClient.
http_client_contract_test Shared conformance test suite for adapter packages.
example Flutter example app using the contracts and adapters.

Architecture

Keep feature/business code dependent on http_client_contracts only. Pick and wire one concrete adapter at your composition root.

flowchart BT
  subgraph App["Mobile/Web App"]
    CR["Composition Root"]
    subgraph Mods["Feature Modules"]
      A["Auth"]
      F["Feed"]
      P["Profile"]
    end
  end

  CP["Contract Package<br/>http_client_contracts<br/>(HttpClient interface)"]
  AD["Adapter Package<br/>http_client_dio<br/>(DioHttpClient)"]
  NET["External Network / APIs"]

  A -->|"depends on"| CP
  F -->|"depends on"| CP
  P -->|"depends on"| CP
  AD -->|"implements interface"| CP

  CR -->|"creates/wires"| AD
  AD --> NET

  linkStyle 3 stroke-dasharray: 10 8
Loading

Quick Start

dart pub get

Use contracts in app/business layers:

import 'package:http_client_contracts/http_client_contracts.dart';

Wire one adapter in composition/infrastructure:

import 'package:http_client_contracts/http_client_contracts.dart';
import 'package:http_client_dio/http_client_dio.dart';

final HttpClient client = DioHttpClient();

Development

Run analysis/tests per package while working:

dart analyze
dart test

For adapter behavior validation, use http_client_contract_test in adapter package tests.

Package Docs

About

A transport-agnostic HTTP interface for Dart and Flutter.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors