Pakete, Repositories und App-Kategorien suchen

Paketdetailsv2.0.0

graphql_2_rest

Eine leichte Bibliothek zum Konvertieren von GraphQL-Abfragen in REST-Format, die die Verwendung jedes HTTP-Clients zur Ausführung von Anfragen ermöglicht.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
522
Likes
64
Pub-Punkte
160

Paket installieren

flutter pub add graphql_2_rest

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Eine leichte Flutter/Dart-Bibliothek, die GraphQL-Abfragen in REST-kompatible HTTP-Anfragen umwandelt. Sie ermöglicht Entwicklern, standardmäßige HTTP-Clients zur Ausführung von GraphQL-Operationen zu verwenden, ohne einen speziellen GraphQL-Client benötigen zu müssen. Dies vereinfacht die Integration mit bestehender REST-basierter Infrastruktur und Tools, insbesondere in Umgebungen, in denen GraphQL-Clients nicht verfügbar oder nicht bevorzugt sind. Das Paket unterstützt alle wichtigen Plattformen und ist daher ideal für plattformübergreifende Anwendungen, die flexible API-Kommunikation erfordern.

Anwendungsfälle

  • Konvertierung von GraphQL-Abfragen in REST für veraltete Systeme
  • Verwendung standardmäßiger HTTP-Clients mit GraphQL-Daten
  • Einfachere API-Integration in eingeschränkten Umgebungen
  • GraphQL-Nutzung in Apps mit strengen HTTP-Client-Richtlinien aktivieren
  • Unterstützung hybrider REST-GraphQL-Backend-Architekturen

Hauptmerkmale

  • Leichtgewichtig und geringe Abhängigkeit
  • Automatische Abfrageumwandlung von GraphQL zu REST
  • Plattformübergreifende Kompatibilität
  • Funktioniert mit jedem HTTP-Client
  • Einfache Integration über den pub add-Befehl

Geeignet für

  • Entwickler, die REST-Clients verwenden, aber GraphQL-Daten benötigen
  • Teams, die von REST zu GraphQL migrieren, schrittweise
  • Projekte mit strengen Abhängigkeitsbeschränkungen
  • Anwendungen für mehrere Plattformen
  • Anwendungsfälle, die ein flexibles API-Layer-Design erfordern

Hinweise

  • Beschränkt auf grundlegende GraphQL-Abfrageunterstützung
  • Keine integrierte Fehlerbehandlung oder Caching
  • Unterstützt keine Mutationen oder Abonnements
  • Erfordert manuelle Verwaltung von Headern und Authentifizierung
  • Nicht geeignet für komplexe GraphQL-Schemas

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

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')
  ),
);

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.