Es scheint, dass Sie ohne Eingabe keine PATCH- oder POST-Anfrage stellen können?
Fehler: Error: [GraphQL mutation using a REST call without a body]. No
Eingabe was detected. Pass bodyKey, or bodyBuilder to the @rest() directive to resolve this.
Mutation:
mutation extendTrial($orgSlug: String!) {
extendTrialResult(orgSlug: $orgSlug) @rest(
type: "Org",
path: "/orgs/{args.orgSlug}/extend_trial/",
method: "PATCH",
bodySerializer: "text"
)
}
Apollo-Optionen:
bodySerializers: {
text: (data, headers) => {
headers.set('Content-Type', 'text/plain');
return { body: data, headers };
}
}
Ich denke, das kannst du tun:
mutation extendTrial($orgSlug: String!) {
extendTrialResult(orgSlug: $orgSlug, input: null) @rest(
type: "Org",
path: "/orgs/{args.orgSlug}/extend_trial/",
method: "PATCH",
bodySerializer: "text"
)
}
Eigentlich hat input: null
mir nicht funktioniert, aber das hat funktioniert:
mutation extendTrial($orgSlug: String!) {
extendTrialResult(orgSlug: $orgSlug, input: {}) @rest(
type: "Org",
path: "/orgs/{args.orgSlug}/extend_trial/",
method: "PATCH",
bodySerializer: "text"
)
}
Ist das nicht objektiv schrecklich? Gibt es jetzt einen Weg, das zu umgehen? Die Dokumentation sagt:
Wenn Sie eine POST- oder PUT-HTTP-Anfrage stellen, müssen Sie häufig einen Anfragetext bereitstellen. Gemäß Konvention empfiehlt GraphQL, dass Sie Ihre Eingabetypen als Eingabe benennen. Daher suchen wir standardmäßig dort nach einem JSON-Objekt für Ihren Textkörper.
Klingt das nicht so, als wüssten wir, dass man nicht immer einen Körper braucht?
Als der Autor dieser Doc-Zeile zu sprechen, ja, ich bin mir bewusst. Dies hatte für meine Anwendungsfälle einfach nicht so hohe Priorität.
@d9001 Wenn Sie sich die Problemumgehung von
Ja, es ist nicht so, dass ich es nicht zum Laufen bekommen hätte. Es hat mich einfach wahnsinnig gemacht, herauszufinden, was das Problem war, und die Lösung ist irgendwie meh, wie in meinen Pull-Requests genannt, wo jeder mir sagte, ich solle das unbenutzte Objekt entfernen :|
Ich werde mir ansehen, was nötig wäre, um diese Anforderung zu entfernen.
Hilfreichster Kommentar
Eigentlich hat
input: null
mir nicht funktioniert, aber das hat funktioniert: