GraphQL: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
GraphQL ist eine Abfragesprache (Query) für [[API]]<nowiki/>s und ein Laufzeitsystem (Runtime) zum beantworten von Abfragen.<ref>[https://graphql.org/ graphql.org] Abgerufen m 9.03.2023</ref>  GraphQL wurde 2012 von Facebook (heutzutage bekannt als Meta) intern entwickelt und 2015 veröffentlich.<ref>[https://engineering.fb.com/2015/09/14/core-data/graphql-a-data-query-language/ engineering.fb.com] Abgerufen am 9.03.2023</ref>  Am 7. November 2018 wurde das GraphQL-Projekt von Facebook in die GraphQL Foundation zusammen mit der Linux Foundation ausgegliedert.<ref>[https://techcrunch.com/2018/11/06/facebooks-graphql-gets-its-own-open-source-foundation/?guccounter=2&guce_referrer=aHR0cHM6Ly9kZS53aWtpcGVkaWEub3JnLw&guce_referrer_sig=AQAAAGvkbhqtByOmsebWmmneLkqNsM_F1sZFcb3jm7N5-qpp-nSpTOXlG_sRm_qvcnxjAaFKmViTUUPmycYEjSn20Y-T2K_V_s0i5mXauxiFWZVrJNRYTxLgN7atUJQBDa1oc_hJiDkM4G0wxW-u3GECE5bKXEot2aClrXs7vpG1Acnq techcrunch.com] Abgerufen am 9.03.2023</ref>
{{Infobox
| Bild = [[File:GraphQL Logo.svg|200px|center|alt=GraphQL Logo]]
| Titel = GraphQL
| Feldname1 = Entwickler
| Daten1 = Meta und Community
| Feldname2 = Erste Veröffentlichung
| Daten2 = 14. September, 2015
| Feldname3 = Finale Veröffentlichung
| Daten3 = Oktober, 2021
| Feldname4 = Repository
| Daten4 = [https://github.com/graphql/graphql-spec github.com/graphql/graphql-spec]
| Feldname5 = Website
| Daten5 = [https://graphql.org graphql.org]
}}


GraphQL ist eine flexible Alternative zu SQL, die sich durch ihre Effiziens auszeichnet. Sie ermöglicht es dem Benutzy die genaue Struktur der benötigten Daten zu definieren, ohne unnötig große Datenmengen bei jeder Abfrage zu übermitteln.  GraphSQL verfügt über drei verschieden Operations-Typen, wie das Lesen (Query),  Schreiben (Mutation) und Abonnieren (Subscription) von Datenänderungen (Echtzeit-Updates).<ref>[https://web.archive.org/web/20180718051011/http://facebook.github.io/graphql/June2018/#sec-Language.Operations web.archive.org]  Archiv von Wikipedia, Abgerufen am 9.03.2023</ref> Es kann auch in einer [[IDE (Integrated Development Environment)]] namens [[GraphiQL]] bereitgestellt werden, welche auch modifiziert werden kann, um das Programmieren zu vereinfachen.<ref>[https://github.com/graphql/graphiql/blob/main/packages/graphiql/README.md github.com] Abgerufen am 3.09.2023</ref>
[[GraphQL]] ist eine Abfragesprache (Query) für [[API]]<nowiki/>s und ein Laufzeitsystem (Runtime) zum beantworten von Abfragen. Sie ist eine flexible Alternative zu [[SQL]], die sich durch ihre Effizienz auszeichnet. Sie ermöglicht es dem Benutzy, die genaue Struktur der benötigten Daten zu definieren, ohne unnötig große Datenmengen bei jeder Abfrage zu übermitteln.  GraphQL verfügt über drei verschieden Operations-Typen, wie das Lesen (''Query''),  Schreiben (''Mutation'') und Abonnieren (''Subscription'') von Datenänderungen (Echtzeit-Updates).<ref>[https://web.archive.org/web/20180718051011/http://facebook.github.io/graphql/June2018/#sec-Language.Operations web.archive.org]  Archiv von Wikipedia, Abgerufen am 9.03.2023</ref> Es kann auch in einer [[IDE|IDE (Integrated Development Environment)]] namens [[GraphiQL]] bereitgestellt werden, welche auch modifiziert werden kann, um das Programmieren zu vereinfachen.<ref>[https://github.com/graphql/graphiql/blob/main/packages/graphiql/README.md github.com] Abgerufen am 3.09.2023</ref>
 
== Geschichte ==
GraphQL wurde 2012 von Facebook (heutzutage bekannt als Meta) intern entwickelt und 2015 veröffentlicht.<ref>[https://graphql.org/ graphql.org] Abgerufen am 9.03.2023</ref><ref>[https://engineering.fb.com/2015/09/14/core-data/graphql-a-data-query-language/ engineering.fb.com] Abgerufen am 9.03.2023</ref>  Am 7. November 2018 wurde das GraphQL-Projekt von Facebook in die GraphQL Foundation zusammen mit der Linux Foundation ausgegliedert.<ref>[https://techcrunch.com/2018/11/06/facebooks-graphql-gets-its-own-open-source-foundation/?guccounter=2&guce_referrer=aHR0cHM6Ly9kZS53aWtpcGVkaWEub3JnLw&guce_referrer_sig=AQAAAGvkbhqtByOmsebWmmneLkqNsM_F1sZFcb3jm7N5-qpp-nSpTOXlG_sRm_qvcnxjAaFKmViTUUPmycYEjSn20Y-T2K_V_s0i5mXauxiFWZVrJNRYTxLgN7atUJQBDa1oc_hJiDkM4G0wxW-u3GECE5bKXEot2aClrXs7vpG1Acnq techcrunch.com] Abgerufen am 9.03.2023</ref>


== Installation ==
== Installation ==
Die gewünschte GraphQL-Version kann auf der [https://graphql.org/ Offiziellen Seite] unter dem Tab "[https://graphql.org/code/ Code]" heruntergeladen werden. Zu jeder Version wird eine seperate Installation benötigt, welche in ihrer Dokumentation erklärt wird. Es werden jedoch <code>npm install</code> oder <code>import</code> in mehreren Sprachen, <code>go get</code> in GO, <code>use</code> in PHP, <code>using</code> in C-Sprachen, <code>use</code> in Rust, <code>pip install</code> in Python, <code>gem install</code> in Ruby und viele vorgenerierte Code-Snippets zum installieren genutzt.
Die gewünschte GraphQL-Version kann auf der [https://graphql.org/ Offiziellen Seite] unter dem Tab "[https://graphql.org/code/ Code]" heruntergeladen werden. Zu jeder Version wird eine separate Installation benötigt, welche in ihrer Dokumentation erklärt wird. Es werden jedoch <code>npm install</code> oder <code>import</code> in mehreren Sprachen, <code>go get</code> in GO, <code>use</code> in PHP, <code>using</code> in C-Sprachen, <code>use</code> in Rust, <code>pip install</code> in Python, <code>gem install</code> in Ruby und viele vorgenerierte Code-Snippets zum installieren genutzt.


Zu den möglichen Sprach-Implementierungen gehören:
Zu den möglichen Sprach-Implementierungen gehören:
Zeile 21: Zeile 37:
|[https://github.com/webonyx/graphql-php graphql-php]
|[https://github.com/webonyx/graphql-php graphql-php]
|-
|-
|'''[[Java]] / Kotlin'''
|'''[[Java (Programmiersprache)|Java]] / Kotlin'''
|[https://github.com/graphql-java/graphql-java graphql-java]
|[https://github.com/graphql-java/graphql-java graphql-java]
|-
|-
|'''[[C#]] /.NET'''
|'''[[C-Sharp|C#]] /.NET'''
|[https://github.com/graphql-dotnet/graphql-dotnet graphql-dotnet]
|[https://github.com/graphql-dotnet/graphql-dotnet graphql-dotnet]
|-
|-
|'''[[Python]]'''
|'''[[Python (Programmiersprache)|Python]]'''
|[https://graphene-python.org/ Graphene]
|[https://graphene-python.org/ Graphene]
|-
|-
Zeile 54: Zeile 70:
|[https://github.com/morpheusgraphql/morpheus-graphql Morpheus-graphql]
|[https://github.com/morpheusgraphql/morpheus-graphql Morpheus-graphql]
|-
|-
|'''[[C]] / [[C++]]'''
|'''[[C (Programmiersprache)]] / [[C++]]'''
|[https://github.com/graphql/libgraphqlparser libgraphqlparser]
|[https://github.com/graphql/libgraphqlparser libgraphqlparser]
|-
|-
Zeile 88: Zeile 104:
[[GraphiQL]]<ref>[https://github.com/graphql/graphiql/tree/main/packages/graphiql github.com] Abgerufen am 13.03.2023</ref> eignet sich am besten für das Programmieren in GraphQL, ist jedoch nicht Notwendig. Da GraphQL  nicht an bestimmte Datenbanken gebunden ist, kann sie universell eingesetzt werden. Die Suchanfrage ähnelt dem Output, was das Überprüfen von Daten einfacher und somit schneller macht.  
[[GraphiQL]]<ref>[https://github.com/graphql/graphiql/tree/main/packages/graphiql github.com] Abgerufen am 13.03.2023</ref> eignet sich am besten für das Programmieren in GraphQL, ist jedoch nicht Notwendig. Da GraphQL  nicht an bestimmte Datenbanken gebunden ist, kann sie universell eingesetzt werden. Die Suchanfrage ähnelt dem Output, was das Überprüfen von Daten einfacher und somit schneller macht.  
{|style=vertical-align:top;|
{|style=vertical-align:top;|
|+Beispiel
!Suchanfrage
!Suchanfrage
!Output
!Output
|-
|-
|style=vertical-align:top; width = 100%;|
|style="vertical-align:top; width:50%;"|
<syntaxhighlight>
<syntaxhighlight style="background-color: #fff;" lang="graphviz">
{
{
hero {
        hero {
name
                name
               # Queries can have comments!
               friends {
               friends {
name
                        name
}
                }
}
        }
}
}
</syntaxhighlight>
</syntaxhighlight>
|style=vertical-align:top;|
|style="vertical-align:top; width:50%;"|
<syntaxhighlight>
<syntaxhighlight style="background-color: #fff;" lang="javascript">
{
{
"data": {
        "data": {
"hero": {
                "hero": {
"name": "R2-D2",
                        "name": "R2-D2",
"friends": [
                        "friends": [
                               {
                               {
                                 "name": "Luke Skywalker"
                                 "name": "Luke Skywalker"
Zeile 119: Zeile 143:
                               {
                               {
                                 "name": "Leia Organa"
                                 "name": "Leia Organa"
}
                                }
]
                        ]
}
                }
}
        }
}
}
</syntaxhighlight>
</syntaxhighlight>
Zeile 129: Zeile 153:
== Einzelnachweise ==
== Einzelnachweise ==
<references />{{Navigationsleiste Datenbanken}}
<references />{{Navigationsleiste Datenbanken}}
[[Kategorie:Datenbanken]]

Aktuelle Version vom 29. September 2023, 14:09 Uhr

GraphQL
GraphQL Logo
Vorlage:Infobox/Wartung/Bild

Entwickler Meta und Community
Erste Veröffentlichung 14. September, 2015
Finale Veröffentlichung Oktober, 2021
Repository github.com/graphql/graphql-spec
Website graphql.org

GraphQL ist eine Abfragesprache (Query) für APIs und ein Laufzeitsystem (Runtime) zum beantworten von Abfragen. Sie ist eine flexible Alternative zu SQL, die sich durch ihre Effizienz auszeichnet. Sie ermöglicht es dem Benutzy, die genaue Struktur der benötigten Daten zu definieren, ohne unnötig große Datenmengen bei jeder Abfrage zu übermitteln. GraphQL verfügt über drei verschieden Operations-Typen, wie das Lesen (Query), Schreiben (Mutation) und Abonnieren (Subscription) von Datenänderungen (Echtzeit-Updates).[1] Es kann auch in einer IDE (Integrated Development Environment) namens GraphiQL bereitgestellt werden, welche auch modifiziert werden kann, um das Programmieren zu vereinfachen.[2]

Geschichte

GraphQL wurde 2012 von Facebook (heutzutage bekannt als Meta) intern entwickelt und 2015 veröffentlicht.[3][4] Am 7. November 2018 wurde das GraphQL-Projekt von Facebook in die GraphQL Foundation zusammen mit der Linux Foundation ausgegliedert.[5]

Installation

Die gewünschte GraphQL-Version kann auf der Offiziellen Seite unter dem Tab "Code" heruntergeladen werden. Zu jeder Version wird eine separate Installation benötigt, welche in ihrer Dokumentation erklärt wird. Es werden jedoch npm install oder import in mehreren Sprachen, go get in GO, use in PHP, using in C-Sprachen, use in Rust, pip install in Python, gem install in Ruby und viele vorgenerierte Code-Snippets zum installieren genutzt.

Zu den möglichen Sprach-Implementierungen gehören:

Sprache Implementierung
JavaScript GraphQL.js
Go graphql-go
PHP graphql-php
Java / Kotlin graphql-java
C# /.NET graphql-dotnet
Python Graphene
Swift / Objective-C Graphiti
Rust Juniper
Ruby graphql-ruby
Elixir Absinthe
Scala Sangria
Flutter GraphQL Flutter
Clojure Lacinia
Haskell Morpheus-graphql
C (Programmiersprache) / C++ libgraphqlparser
Elm elm-graphql
OCaml / Reason ocaml-graphql-server
Erlang graphql-erlang
Julia Diana.jl
R ghql
Groovy GORM GraphQL
Perl graphql-perl
D graphqld
Ballerina ballerina-graphql

Benutzung

GraphiQL[6] eignet sich am besten für das Programmieren in GraphQL, ist jedoch nicht Notwendig. Da GraphQL nicht an bestimmte Datenbanken gebunden ist, kann sie universell eingesetzt werden. Die Suchanfrage ähnelt dem Output, was das Überprüfen von Daten einfacher und somit schneller macht.

Suchanfrage Output
{
        hero {
                name
                friends {
                        name
                }
        }
}










{
        "data": {
                "hero": {
                        "name": "R2-D2",
                         "friends": [
                                {
                                  "name": "Luke Skywalker"
                                },
                                {
                                  "name": "Han Solo"
                                },
                                {
                                  "name": "Leia Organa"
                                }
                        ]
                }
        }
}

Einzelnachweise

  1. web.archive.org Archiv von Wikipedia, Abgerufen am 9.03.2023
  2. github.com Abgerufen am 3.09.2023
  3. graphql.org Abgerufen am 9.03.2023
  4. engineering.fb.com Abgerufen am 9.03.2023
  5. techcrunch.com Abgerufen am 9.03.2023
  6. github.com Abgerufen am 13.03.2023