2017-09-22 1 views
0

Im Apollo Entwickler Dokumentation erklären es ein Beispiel in GraphQLKönnen Sie die Terminologie in einer GraphQL POST-Anfrage

für einen gültigen Körper einer Post-Anforderung ist
{ 
    "query": "query aTest($arg1: String!) { test(who: $arg1) }" 
} 

Von dem, was ich in Apollo Server gesehen habe diese Abfrage würde auch arbeiten mit:

Könnte jemand bitte erklären, warum "Frage" zweimal im ersten Beispiel erscheint? Was interpretiert der GraphQL-Server daraus?

Ist das zweite Beispiel ein standardisiertes Format?

Ref: http://dev.apollodata.com/tools/graphql-server/requests.html

Antwort

1

Abfrage zwei Bedeutungen in GraphQL haben kann - es ist auf die Anforderung wird an den Server, oder auf die Art der Operation innerhalb dieser Anforderung verwendet beziehen kann. Es gibt drei Arten von Operationen, die in GraphQL verwendet werden: Query, Mutation und Subscription.

In Ihrem ersten Beispiel identifiziert das erste query das Abfragedokument mit Ihrer Anfrage gesendet wird. Die zweite query identifiziert die Art der Operation.

Mit anderen Worten, Sie können Abfrage einen Server, aber Ihre Abfrage kann oder kann keine Abfrage enthalten (es kann beispielsweise eine Mutation sein).

Wenn Sie Ihre Abfrage schreiben, wenn Sie die Art der Operation weglassen, nimmt GraphQL einfach an, dass Sie eine Abfrage und keine andere Operation wünschen. In ähnlicher Weise ist es auch möglich, den Operationsnamen (aTest) wegzulassen.

AFAIK, es gibt keinen Vorteil den Operationsnamen wegzulassen - Sie sollten ihn immer einbeziehen, um Unklarheiten und potenzielle Probleme auf der ganzen Linie zu vermeiden.

Verwandte Themen