2017-08-18 2 views
-1

Gibt es eine Möglichkeit, Sonderzeichen im GraphQL-Schema zu aktivieren (z. B. /, :, @ in den Feldnamen)?Sonderzeichen im GraphQL-Schema

Und wenn es nicht (was ich vermute, ist der Fall) haben Sie eine Idee, was wäre relativ einfache Möglichkeit, den node.js Code (https://github.com/graphql/graphql-js) zu ändern, um eine solche Funktionalität zu erreichen?

+0

Für diejenigen, die nach unten diese stimmten ohne hilfreich sein stört und zu erziehen, ich hoffe, dass Sie stolz auf sich fühlen, wie Sie durch zeigt überlegen zu fühlen bekam, dass Sie wissen, warum dies keine gute Idee ist, ohne erklärt sogar warum. – otissv

+0

Danke, @otissv. Ja - schlecht, schlecht stackoverflow-ers! ;) – szymon

+0

@otissv Downvoting bedeutet nicht, dass es überhaupt eine Vielzahl von Dingen bedeuten kann, wie schlechte Forschung oder unklare Frage. Sie sind nicht genug auf dieser Seite downvoting. –

Antwort

1

Ich würde empfehlen, dies zu tun. graphql-js folgt der in der graphql-Spezifikation angegebenen grammatikalischen Form. Eine solche Änderung wäre eine Abkehr von der Spezifikation und Ihr Schema würde nicht länger mit graphql-Werkzeugen funktionieren. Der Parser würde ein ungültiges Schema werfen, da diese Zeichen in graphql eine besondere Bedeutung haben.

GraphQL Spec

Interpunktions :: eines! $() ...: = @ [] {| }
GraphQL-Dokumente enthalten Interpunktion, um die Struktur zu beschreiben. GraphQL ist eine Datenbeschreibungssprache und keine Programmiersprache, daher fehlt GraphQL die Interpunktion, die oft zur Beschreibung mathematischer Ausdrücke verwendet wird.

http://facebook.github.io/graphql/#sec-Punctuators

Namen ::/[_ A-Za-z] [_ 0-9A-Za-z] */
GraphQL Abfrage Dokumente voll sind benannter Dinge: Operationen, Felder, Argumente, Direktiven, Fragmente und Variablen. Alle Namen müssen der gleichen grammatikalischen Form folgen. Namen in GraphQL sind Groß-und Kleinschreibung. Das heißt, Name, Name und NAME beziehen sich alle auf unterschiedliche Namen. Unterstriche sind signifikant, was bedeutet, dass anderer Name und anderer Name zwei verschiedene Namen sind. Die Namen in GraphQL sind auf diese ASCII-Teilmenge möglicher Zeichen beschränkt, um die Zusammenarbeit mit so vielen anderen Systemen wie möglich zu unterstützen.

http://facebook.github.io/graphql/#sec-Names

+0

Ich sehe, danke für Ihre Antwort! Ich werde sicherlich meine Ziele überdenken müssen, aber meine grundlegende Absicht ist es, irgendeine Form von Namespace-Mechanismus zu unterstützen (lose um die Zeilen von https://medium.com/@oleg.ilyenko/graphql-namespaces-proposal-2a097ce81d2a) und bieten die Möglichkeit, Antworten zu generieren, die spezielle Schlüssel wie "dc: title" oder "@id" enthalten, was nützlich ist, wenn GraphQL auf verknüpfte Daten angewendet wird. – szymon

+0

Um einen Namespace wie 'authors/create' zu ​​erstellen, müssten Sie Ihren eigenen Parser schreiben. Es lohnt sich nicht und es wird nicht mit dem Rest von graphql kompatibel sein. Die Art, wie ich es tue ist, Methoden mit dem Typnamen mit Camelcase voranstellen, zum Beispiel 'authorsCreate'. '@' Zeichen ist ein Sonderzeichen und so ist ':'.'/' ist in der aktuellen Spezifikation nicht erlaubt, also ist ein guter Kandidat. Aber Sie können '_' verwenden, um zu trennen, die aktuelle Parser nicht brechen – otissv

+0

@szymon, wenn dies Ihre Frage beantwortet, markieren Sie bitte als beantwortet. – otissv

Verwandte Themen