mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 01:12:56 +03:00
225 lines
12 KiB
Markdown
225 lines
12 KiB
Markdown
# Hasura GraphQL Engine
|
|
|
|
[![Docs](https://img.shields.io/badge/docs-v1.0-brightgreen.svg?style=flat)](https://docs.hasura.io)
|
|
[![CircleCI](https://circleci.com/gh/hasura/graphql-engine.svg?style=shield)](https://circleci.com/gh/hasura/graphql-engine)
|
|
|
|
<a href="https://discord.gg/vBPpJkS"><img src="https://img.shields.io/badge/chat-discord-brightgreen.svg?logo=discord&style=flat"></a>
|
|
<a href="https://twitter.com/intent/follow?screen_name=HasuraHQ"><img src="https://img.shields.io/badge/Follow-HasuraHQ-blue.svg?style=flat&logo=twitter"></a>
|
|
<a href="https://eepurl.com/dBUfJ5"><img src="https://img.shields.io/badge/newsletter-subscribe-yellow.svg?style=flat"></a>
|
|
|
|
Hasura GraphQL Engine ist ein blitzschneller GraphQL Server, welcher dir die Möglichkeit bietet, **sofort und in Echtzeit GraphQL APIs in Postgres** zu entwickeln, die mit [**webhook triggern**](../event-triggers.md) für Datenbank-Events und [**remote schematas**](../remote-schemas.md) für Businesslogik erweitert werden können.
|
|
|
|
Hasura hilft dir, GraphQL-Anwendungen basierend auf Postgres zu entwickeln oder schrittweise zu GraphQL zu wechseln für schon existierende Anwendungen, die Postgres benutzen.
|
|
|
|
Dazu mehr auf [hasura.io](https://hasura.io) und in den [Docs](https://docs.hasura.io).
|
|
|
|
---
|
|
|
|
![Hasura GraphQL Engine Demo](../assets/demo.gif)
|
|
|
|
---
|
|
|
|
![Hasura GraphQL Engine Realtime Demo](../assets/realtime.gif)
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
- **Entwickle mächtige Queries**: Built-in Filter, Paginierung, Suchmuster, Bulk-Inserts, Update- und Delete-Mutationen
|
|
- **Echtzeit**: Konvertiere jede GraphQL Query zu einer Live-Query mit Hilfe von Subscriptions
|
|
- **Merge Remote Schemas**: Zugriff auf individuelle GraphQL Schemas für Businesslogik mit einem einzigen GraphQL Engine-Endpoint. [Mehr dazu](../remote-schemas.md).
|
|
- **Steuere Webhooks oder Severless-Funktionen**: Mit Postgres insert/update/delete Events. [Mehr dazu](../event-triggers.md).
|
|
- **Funktioniert mit bereits existierenden Live-Datenbanken**: Steuere eine bereits existierende Postgres Datenbank an, um eine fertige GraphQL API zu erhalten
|
|
- **Detailierte Zugriffssteuerung**: Dynamischer Zugriff, der sich mühelos mit deinem Authentifizierungssystem verbinden lässt (z.B.: auth0, firebase-auth)
|
|
- **Hochperformant & wenig Speicherbedarf**: ~15MB docker image; ~50MB RAM @ 1000 req/s; multi-core aware
|
|
- **Admin UI & Migration**: Admin UI & von Rails inspirierte Schemata-Integration
|
|
- **Postgres** ❤️: Unterstützt Postgres Typen (PostGIS/geo-location, etc.), ändert Views zu _Graphen_, löst gespeicherte Funktionen aus oder Prozesse mit Mutationen
|
|
|
|
Mehr dazu auf [hasura.io](https://hasura.io) und in den [Docs](https://docs.hasura.io).
|
|
|
|
## Inhaltsverzeichnis
|
|
|
|
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc -->
|
|
|
|
**Table of Contents**
|
|
|
|
- [Schnellstart](#schnellstart)
|
|
- [One-click Deployment auf Heroku](#one-click-deployment-auf-heroku)
|
|
- [Andere one-click Deployment Optionen](#andere-one-click-deployment-optionen)
|
|
- [Architektur](#architektur)
|
|
- [Client-side Tooling](#client-side-tooling)
|
|
- [Füge Businesslogik hinzu](#füge-businesslogik-hinzu)
|
|
- [Remote Schemas](#remote-schemas)
|
|
- [Löse Webhooks und Datenbankevents aus](#löse-webhooks-und-datenbankevents-aus)
|
|
- [Demos](#demos)
|
|
- [Realtime Applikationen](#realtime-applikationen)
|
|
- [Videos](#videos)
|
|
- [Support & Fehlerbehebung](#support--fehlerbehebung)
|
|
- [Contributing](#contributing)
|
|
- [Marke](#marke)
|
|
- [Lizenz](#lizenz)
|
|
- [Übersetzungen](#uebersetzungen)
|
|
|
|
<!-- markdown-toc end -->
|
|
|
|
## Schnellstart:
|
|
|
|
### One-click Deployment auf Heroku
|
|
|
|
Der schnellste Weg, Hasura auszuprobieren, ist mit Heroku.
|
|
|
|
1. Klick auf den folgenden Button, um mit dem kostenlosen Postgress Add-On die GraphQL Engine auf Heroku zu deployen:
|
|
|
|
[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/hasura/graphql-engine-heroku)
|
|
|
|
2. Öffne die Hasura Console
|
|
|
|
Besuche `https://<app-name>.herokuapp.com` (_ersetze \<app-name\> mit dem Namen deiner App_), um die Admin Console zu öffnen.
|
|
|
|
3. Erstelle deine erste GraphQL Query
|
|
|
|
Erstelle eine Tabelle und lasse deine erste Query laufen. Folge diesem [einfachem Guide](https://docs.hasura.io/1.0/graphql/manual/getting-started/first-graphql-query.html).
|
|
|
|
### Andere one-click Deployment Optionen
|
|
|
|
Probiere die folgenden Guides für die one-click Deployment Optionen:
|
|
|
|
| **Infra Anbieter** | **One-click Link** | **Zusätzliche Information** |
|
|
| :----------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
| DigitalOcean | [![Deploy to DigitalOcean](https://graphql-engine-cdn.hasura.io/img/create_hasura_droplet_200px.png)](https://marketplace.digitalocean.com/apps/hasura?action=deploy&refcode=c4d9092d2c48&utm_source=hasura&utm_campaign=readme) | [docs](https://docs.hasura.io/1.0/graphql/manual/guides/deployment/digital-ocean-one-click.html#hasura-graphql-engine-digitalocean-one-click-app) |
|
|
| Azure | [![Deploy to Azure](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3a%2f%2fraw.githubusercontent.com%2fhasura%2fgraphql-engine%2fmaster%2finstall-manifests%2fazure-container-with-pg%2fazuredeploy.json) | [docs](https://docs.hasura.io/1.0/graphql/manual/guides/deployment/azure-container-instances-postgres.html) |
|
|
|
|
### Andere Deployment Möglichkeiten
|
|
|
|
Für auf Docker basierende Deployments and erweiterte Konfigurationsmöglichkeiten: [Deployment
|
|
Guides](https://docs.hasura.io/1.0/graphql/manual/getting-started/index.html) oder
|
|
[Manifest installieren](../install-manifests).
|
|
|
|
## Architektur
|
|
|
|
Die Hasura GraphQL Engine simuliert eine Postgres Datenbank-Instanz and kann Anfragen von Client-Apps verarbeiten. Sie kann so konfiguriert werden, dass es mit deinem schon bestehenden Authentifizierungssystem funktioniert und kann dementsprechend Zugriffe via "field-level"-Regeln mit dynamischen Variablen von deinem Autehentifizierungssystem kontrollieren.
|
|
|
|
Du kannst auch Remote-GraphQL Schemas einbinden und so eine vereinheitlichte GraphQL API benutzen.
|
|
|
|
![Hasura GraphQL Engine Architektur](../assets/hasura-arch.svg)
|
|
|
|
## Client-side Tooling
|
|
|
|
Hasura funktioniert mit jedem GraphQL Client. Wir empfehlen [Apollo Client](https://github.com/apollographql/apollo-client). Andernfalls besuche [awesome-graphql](https://github.com/chentsulin/awesome-graphql) für eine Liste von anderen möglichen Clients.
|
|
|
|
## Füge Businesslogik hinzu
|
|
|
|
Die GraphQL Engine bietet einfach zu verstehende, skalierende und performante Möglichkeiten, um deinem Backend individuelle Businesslogik hinzuzufügen.
|
|
|
|
### Remote Schemas
|
|
|
|
Füge zusätzlich zu Hasuras Postgres-basierendem GraphQL Schema deine individuellen Resolver in einem Remote Schema hinzu. Dies hilft zum Beispiel bei der Implementierung von einer Bezahl-API oder beim Anfragen von Daten, die nicht in deiner eigenen Datenbank sind - [mehr dazu](../remote-schemas.md).
|
|
|
|
### Löse Webhooks und Datenbankevents aus
|
|
|
|
Füge asynchrone Businesslogik hinzu, welche von Datenbankevents ausgelöst wird.
|
|
Das ist perfekt für Benachrichtigungen, Daten-Pipelines von Postgres oder asynchrones Processing - [mehr dazu](../event-triggers.md).
|
|
|
|
### Abgeleitete Daten oder Datentransformation
|
|
|
|
Transformiere Daten in Postgres oder lasse deine Businesslogik eigene Daten ableiten, welche von der GraphQL Engine abefragt werden können - [mehr dazu](https://docs.hasura.io/1.0/graphql/manual/queries/derived-data.html).
|
|
|
|
## Demos
|
|
|
|
Schaue dir die Beispiele in dem
|
|
[community/sample-apps](../community/sample-apps) Verzeichnis an.
|
|
|
|
### Realtime Applikationen
|
|
|
|
- Gruppenchat entwickelt mit React, beinhaltet einen Typenanzeiger, Online Users und Benachrichtigungen bei
|
|
neuen Nachrichten.
|
|
|
|
- [Probiere es aus](https://realtime-chat.demo.hasura.app/)
|
|
- [Tutorial](../community/sample-apps/realtime-chat)
|
|
- [Durchsuche die APIs](https://realtime-chat.demo.hasura.app/console)
|
|
|
|
- Echtzeit Standort Tracking App, welche die Koordinaten von Fahrzeugen
|
|
verfolgt und auf einer Karte anzeigt.
|
|
|
|
- [Probiere es aus](https://realtime-location-tracking.demo.hasura.app/)
|
|
- [Tutorial](../community/sample-apps/realtime-location-tracking)
|
|
- [Durchsuche die APIs](https://realtime-location-tracking.demo.hasura.app/console)
|
|
|
|
- Echtzeit Dashboard für Datenaggregation von sich konstant ändernden Daten.
|
|
- [Probiere es aus](https://realtime-poll.demo.hasura.app/)
|
|
- [Tutorial](../community/sample-apps/realtime-poll)
|
|
- [Durchsuche die APIs](https://realtime-poll.demo.hasura.app/console)
|
|
|
|
### Videos
|
|
|
|
- [Füge GraphQL zu einer eigenen GitLab Instanz hinzu](https://www.youtube.com/watch?v=a2AhxKqd82Q) (_3:44 mins_)
|
|
- [Todo App mit Auth0 und GraphQL Backend](https://www.youtube.com/watch?v=15ITBYnccgc) (_4:00 mins_)
|
|
- [GraphQL auf GitLab mit GitLab Auth](https://www.youtube.com/watch?v=m1ChRhRLq7o) (_4:05 mins_)
|
|
- [Dashboard für 10 mio. Fahrzeuge mit Geo-Koordinaten (PostGIS, Timescale)](https://www.youtube.com/watch?v=tsY573yyGWA) (_3:06 mins_)
|
|
|
|
## Support & Fehlerbehebung
|
|
|
|
Die Dokumentation und die Community hilft bei der Fehlersuche und -behebung. Wenn du einen Bug gefunden hast oder mit uns in Verbindung treten möchtest, kannst du uns folgendermassen kontaktieren:
|
|
|
|
- Support & Feedback: [Discord](https://discord.gg/vBPpJkS)
|
|
- Issue & Bug Tracking: [GitHub issues](https://github.com/hasura/graphql-engine/issues)
|
|
- Folge unseren Updates: [@HasuraHQ](https://twitter.com/hasurahq)
|
|
- Schreibe uns im [Webseiten Chat](https://hasura.io)
|
|
|
|
Wir sind stets bemüht um einen gepflegten und freundlichen Umgang in der Community. Bitte schaue dir dazu den [Code of Conduct](../code-of-conduct.md) an.
|
|
|
|
Wenn du ein Sicherheitsrisiko melden möchtest, bitte [lese dies](../SECURITY.md).
|
|
|
|
## Contributing
|
|
|
|
Lese hier den [Contributing Guide](../CONTRIBUTING.md) für mehr Details.
|
|
|
|
## Marke
|
|
|
|
Die Marke Hasura (logos, das Hasura Maskottchen, Abzeichen, etc.) kannst du
|
|
hier finden [../assets/brand](../assets/brand). Du kannst sie in deiner App,
|
|
Webseite, etc. benutzen. Wir würden uns sehr freuen, wenn du das "Powered by Hasura"
|
|
Abzeichen deiner Hasura App hinzufügst. ❤️
|
|
|
|
<div style="display: flex;">
|
|
<img src="../assets/brand/powered_by_hasura_blue.svg" width="150px"/>
|
|
<img src="../assets/brand/powered_by_hasura_white.svg" width="150px"/>
|
|
</div>
|
|
|
|
```html
|
|
<!-- For light backgrounds -->
|
|
<a href="https://hasura.io">
|
|
<img
|
|
width="150px"
|
|
src="https://graphql-engine-cdn.hasura.io/img/powered_by_hasura_blue.svg"
|
|
/>
|
|
</a>
|
|
|
|
<!-- For dark backgrounds -->
|
|
<a href="https://hasura.io">
|
|
<img
|
|
width="150px"
|
|
src="https://graphql-engine-cdn.hasura.io/img/powered_by_hasura_white.svg"
|
|
/>
|
|
</a>
|
|
```
|
|
|
|
## Lizenz
|
|
|
|
Die Kern-GraphQL Engine ist verfügbar unter [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) (Apache-2.0).
|
|
|
|
Alle **anderen Inhalte** (ausser die in [`server`](../server), [`cli`](../cli) und
|
|
[`console`](../console) Verzeichnissen) sind verfügbar unter der [MIT Lizenz](../LICENSE-community).
|
|
Dies beinhaltet [`docs`](../docs) und [`community`](../community)
|
|
Verzeichnisse.
|
|
|
|
## Übersetzungen
|
|
|
|
Dieses Readme ist under anderem in den folgenden Sprachen verfügbar:
|
|
|
|
- [Japanese :jp:](README.japanese.md) (:pray: [@moksahero](https://github.com/moksahero))
|
|
- [French :fr:](README.french.md) (:pray: [@l0ck3](https://github.com/l0ck3))
|
|
- [Greek 🇬🇷](README.greek.md) (:pray: [@MIP2000](https://github.com/MIP2000))
|
|
|
|
Übersetzungen von anderen Dateien kannst du [hier](../translations) finden.
|