Eine GraphQL -Implementierung zum effizienten Stapelüberlaufressourcen (Kommentare, Beiträge, Antworten, Stimmen usw.)
Stack Exchange hat keinen GraphQL -Endpunkt, also habe ich einen gemacht. Die Live -API oben befindet sich vorerst im POC -Modus, während das Schema erstellt wird. Derzeit serviert es Inhalte von https://health.stackexchange.com/ und wird wöchentlich aktualisiert, wobei weitere Pipeline & Infra aufgebaut sind. Erwarten Sie eine minimale Menge an Latenz, da dies derzeit in einem App-Dienst gehostet wird, der sich in Zeiten mit niedrigem Gebrauch absperrt. Wenn dies geschieht, seien Sie bitte geduldig und der Spielplatz/die Anfragen sollten nach dem ersten "Aufwachen" eingehen. Wenn dies eine gewisse Traktion bekommt, wird die Verfügbarkeit erhöht.
Lokal laufen:
docker-compose up
und besuchen Sie http: // localhost: 8080, um den Spielplatz zu verwenden oder mit einigen Abfragen den Endpunkt zu treffen! Zum Beispiel, um Informationen über die höchsten Bewertungs-Q & A-Seiten in einer Unterkommunität zu erhalten:
query postsPagination {
allPostsCursor(first: 10, where: { order: { field: votes, order: DESC } }) {
pageInfo {
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
score
title
body
comments {
userId
text
}
answers {
score
body
comments {
userDisplayName
text
}
}
}
}
}
}
Der Server ist auch als Docker -Container verfügbar, das ein separates Backend vorhanden ist:
docker run -e SERVER='<dbhost>' -e UNAME='<dbUname>' -e PASS='<dbPass>' snimmagadda/stack-exchange-graphql-server:latest
oder aus Quelle zu laufen:
go run cmd/server.goEinige Umgebungsvariablen müssen so eingestellt sein, dass sie lokal ausgeführt werden
| Schlüssel | Typ | Beschreibung | Beispiel |
|---|---|---|---|
SERVER | Saite | DB Host | Lokalhost |
SCHEMA | Saite | App DB -Schema | Stecke |
UNAME | Saite | App DB Benutzername Cred | Appuser |
PASS | Saite | App DB Passwort Credit | Supersecret123 |
SERVER sollte der Hostname eines MySQL -DB sein. Um Inhalte zu bedienen, erwartet der GraphQL -Server ein besiedeltes stacke -Schema.
TODO: Konfigurierbare Parameter ...
go build cmd/server.goEntwicklungsoptionen sind leicht flexibel mit den kommenden Routen ... Im Moment ist Folgendes verfügbar:
Führen Sie das Backend nur mit Docker aus (oder verwenden Sie docker-compose.yml ).
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=password -e MYSQL_ROOT_USER=root -e MYSQL_PASSWORD=password -d -p 3306:3306 mysql:5.7.26
Hier existieren ~ 1K Zeilen werden als Einsätze in Ihr Schema verwendet.
Erstellen (oder kopieren) eine .Env -Datei mit den Variablen in der obigen Tabelle, um den lokalen GraphQL -Server zu konfigurieren.
Starten Sie den Server:
go run cmd/server.go
TODO Ich werde wahrscheinlich etwas Verfeinerung und eingetauscht auf so etwas wie ein elastisches Backend, aber im Moment ist hier das frühe Setup. XML -Dumps, die von Stack Exchange veröffentlicht wurden, werden in ein indiziertes relationales Backend importiert, indem Sie einen Job mit Spring -Stapel nach einem Zeitplan geschrieben haben. Der GraphQL -Server liest aus diesem Backend, um Stack Exchange -Daten aufzudecken. 
? Sai Nimmagadda
Dieses Projekt befindet sich derzeit im Build-Modus. Beiträge, Probleme und Feature -Anfragen sind willkommen!
Fühlen Sie sich frei, Probleme mit der Seite zu überprüfen.
Geben Sie ein ️, wenn dieses Projekt Ihnen geholfen hat!
Copyright © 2020 Sai Nimmagadda.
Dieses Projekt ist MIT lizenziert.
Dieser Readme wurde mit ❤️ von Readme-MD-Generator generiert