Es wird nicht von "Graphen" selbst vervollständigt, aber tatsächlich sind Bibliotheken wie "Graphql-Core" und "Graphql-Relay" unter "Graphen" versteckt. GraphQL ist eine Portierung von graphql-core, da es seit seiner Einführung in der JavaScript-Umgebung beliebt ist. Die Kernbibliothek "graphql" ist in Bezug auf Python einfacher zu verwenden und wird als "Graphen" bezeichnet. Wenn Sie denken, dass "Graphen" -Dokument nicht genügend Beschreibung enthält, ist dies tatsächlich der Erklärungsteil der unteren Bibliothek. Die Antwort finden Sie schließlich unter Referenzimplementierung.
Das Graphenfelddefinitionsverfahren lässt sich leicht mit Mixin hinzufügen. Der Mixin-Stil wird empfohlen, da er bei der Verwendung der Klassenvererbung eine Gefahr darstellen kann.
graphene.relay
: Das Relais selbst ist eine zusätzliche Spezifikation, die auf GraphQL basiert. Da es weit verbreitet ist, ist es weniger verwirrend, grundsätzlich damit umzugehen. Die Schnittstellen Connection
und Node
fallen auf.
Node interface In "Knoten" kann ein einzelnes Objekt über eine Knotenabfrage aus "ID" gezogen werden. Da es standardmäßig nicht sichtbar ist, Nach Bedarf vorbereiten. Wenn ein solcher Zugriffspfad nicht wünschenswert ist (z. B. aus Sicherheitsgründen), kann die Implementierung weggelassen werden.
Sie können mit graphene.Node
importieren, ohne mit graphene.relay.Node
zuzugreifen.
Connection interface
Total_count
of Connection
wird von der Bibliothek nicht unterstützt. Wenn Sie sich separat darum kümmern, gibt es weniger Probleme. Beispielsweise muss die Graphen-Sqlalchemie möglicherweise vom Abfrageobjekt abgeleitet werden, sodass davon ausgegangen wird, dass sie absichtlich isoliert ist.
https://github.com/graphql-python/graphene/issues/776 https://github.com/graphql-python/graphene-django/issues/162
Mit der Unterstützung von "Relay.Connection" sollen die Metadaten auf der Seite "Relay.Node" deklarieren, dass sie "Node" -Schnittstellen unterstützen.
Wenn Sie in graphene_sqlalchemy.SQLAlchemyConnection
eineNode
-Schnittstellendeklaration einfügen, führt dies zu einer doppelten Definition. Machen Sie es also gut (derzeit scheint es gut, mit einer hackartigen Antwort zu überleben).
Sie können aus der Deklarationsreihenfolge-Falle herauskommen, indem Sie das erste Argument von ConnectionField mit Lambda verzögern :.
Recommended Posts