Apollo-link-rest: Fehler beim Ausführen einer Mutation ohne Anforderungstext

Erstellt am 28. Sept. 2018  ·  5Kommentare  ·  Quelle: apollographql/apollo-link-rest

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 };
  }
}

Hilfreichster Kommentar

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"
  )
}

Alle 5 Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen