パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v2.0.0

graphql_2_rest

GraphQL クエリを REST 形式に変換するための軽量なライブラリで、任意の HTTP クライアントを使用してリクエストを実行できます。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
522
いいね数
64
Pub ポイント
160

パッケージをインストール

flutter pub add graphql_2_rest

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

GraphQL クエリを REST 互換の HTTP リクエストに変換する軽量な Flutter/Dart ライブラリです。専用の GraphQL クライアントを必要とせずに、標準の HTTP クライアントで GraphQL 操作を実行できるようにします。既存の REST ベースのインフラストラクチャやツールとの統合を簡素化し、特に GraphQL クライアントが利用できないまたは好ましくない環境に適しています。このパッケージはすべての主要プラットフォームをサポートしており、柔軟な API 通信が必要なクロスプラットフォームアプリケーションに最適です。

用途

  • レガシーシステム向けに GraphQL クエリを REST に変換する
  • GraphQL データと標準 HTTP クライアントの使用
  • 制約された環境でのAPI統合の簡素化
  • 厳格なHTTPクライアントポリシーを持つアプリケーションでGraphQLを使用するように有効にする
  • ハイブリッドな REST-GraphQL バックエンドアーキテクチャのサポート

主な機能

  • 軽量で依存関係が少ない
  • GraphQL から REST への自動クエリ変換
  • クロスプラットフォーム互換性
  • 任意のHTTPクライアントと互換性があります
  • pub add コマンドによる簡単な統合

適している対象

  • REST クライアントを使用しているが、GraphQL データが必要な開発者
  • RESTからGraphQLへ段階的に移行するチーム
  • 厳格な依存関係制約を持つプロジェクト
  • 複数のプラットフォームをターゲットにするアプリケーション
  • 柔軟なAPIレイヤー設計を必要とするユースケース

注意事項

  • 基本的なGraphQLクエリサポートに限定
  • 組み込みのエラーハンドリングやキャッシュなし
  • ミューテーションまたはサブスクリプションをサポートしていません
  • ヘッダーおよび認証の手動管理が必要です
  • 複雑なGraphQLスキーマには適していません

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

GraphQL to REST

Pub style: very good analysis License: MIT

A lightweight library for converting GraphQL queries into REST format, enabling the use of any HTTP client for executing requests.

Usage

To work effectively with the graphql_2_rest library, you primarily need to use two key components: GraphQLQueryPayload and GraphQLQueryBuilder.

  1. GraphQLQueryPayload is responsible for providing the arguments and input models to be used in a GraphQL query. For example, if you have queries like:
const queryA = '''query {
  user(age: %age, firstName: %firstName) {
    first_name
    last_name
    site {
      site_name
    }
  }
}''';

const queryB = '''query {
  user(@userInput) {
    first_name
    last_name
    site {
      site_name
    }
  }
}''';

then you need to create the following GraphQLQueryPayloads with arguments or/and inputs:

class UserQueryPayloadA with GraphQLQueryPayload {
  const UserQueryPayloadA(
    this.age,
    this.firstName,
  );

  final int age;
  final String firstName;

  @override
  Map<String, dynamic> get arguments {
    return {
      'age': age,
      'firstName': firstName,
    };
  }
}

class UserQueryPayloadB with GraphQLQueryPayload {
  const UserQueryPayloadB(
    this.age,
    this.firstName,
  );

  final int age;
  final String firstName;

  @override
  Map<String, Map<String, dynamic>> get inputs {
    return {
      'userInput': {
        'age': age,
        'firstName': firstName,
      },
    };
  }
}
  1. GraphQLQueryBuilder automatically replaces all argument placeholders in the query using values provided by the GraphQLQueryPayload. By default, GraphQLQueryBuilder uses the following prefixes:
  • % for arguments
  • @ for input models

These default prefixes can be customized by specifying different values for argumentPrefix and inputPrefix when creating an instance of the class.

After building the query, you can use any HTTP client to perform the request, but keep in mind that the request must use the POST method:

final dio = Dio(BaseOptions(baseUrl: 'https://endpoint/'));

final queryBuilder = GraphQLQueryBuilder(
  transformer: (query) => query.replaceAll(RegExp(r'\s+'), ' ').trim(),
);

dio.post<dynamic>(
  'graphql/',
  data: queryBuilder.build(
    queryA, //or queryB
    UserQueryPayloadA(27, 'John'), //or UserQueryPayloadB(27, 'John')
  ),
);

カテゴリー

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。