Apollo-link-rest: Erreur lors de l'exécution d'une mutation sans corps de requête

Créé le 28 sept. 2018  ·  5Commentaires  ·  Source: apollographql/apollo-link-rest

Il semble que vous ne puissiez pas faire de demande PATCH ou POST sans entrée?

Erreur : Error: [GraphQL mutation using a REST call without a body]. No saisie 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"
  )
}

Options d'Apollo :

bodySerializers: {
  text: (data, headers) => {
    headers.set('Content-Type', 'text/plain');
    return { body: data, headers };
  }
}

Commentaire le plus utile

En fait, pour moi, input: null n'a pas fonctionné, mais cela a fonctionné :

mutation extendTrial($orgSlug: String!) {
  extendTrialResult(orgSlug: $orgSlug, input: {}) @rest(
    type: "Org",
    path: "/orgs/{args.orgSlug}/extend_trial/",
    method: "PATCH",
    bodySerializer: "text"
  )
}

Tous les 5 commentaires

Je pense que tu peux faire ça :

mutation extendTrial($orgSlug: String!) {
  extendTrialResult(orgSlug: $orgSlug, input: null) @rest(
    type: "Org",
    path: "/orgs/{args.orgSlug}/extend_trial/",
    method: "PATCH",
    bodySerializer: "text"
  )
}

En fait, pour moi, input: null n'a pas fonctionné, mais cela a fonctionné :

mutation extendTrial($orgSlug: String!) {
  extendTrialResult(orgSlug: $orgSlug, input: {}) @rest(
    type: "Org",
    path: "/orgs/{args.orgSlug}/extend_trial/",
    method: "PATCH",
    bodySerializer: "text"
  )
}

N'est-ce pas objectivement horrible ? Y a-t-il un moyen de contourner cela maintenant? La documentation dit :

Lorsque vous effectuez une requête POST ou PUT HTTP, vous devez souvent fournir un corps de requête. Par convention, GraphQL vous recommande de nommer vos types d'entrée comme entrée, c'est donc par défaut que nous chercherons à trouver un objet JSON pour votre corps.

N'est-ce pas comme si nous étions conscients du fait que vous n'avez pas toujours besoin d'un corps ?

Parlant en tant qu'auteur de cette ligne de doc, oui, je suis au courant. Cela n'a tout simplement pas été une priorité élevée pour mes cas d'utilisation.

@d9001 Si vous regardez la solution de contournement de @Laruxo, vous pouvez voir que tout ce que vous avez à faire est d'ajouter quelques lettres pour contourner cette contrainte. Si vous souhaitez contribuer au code de cette fonctionnalité, je serais heureux de vous aider à l'examiner.

Ouais, ce n'est pas que je ne pouvais pas le faire fonctionner. Cela m'a juste rendu dingue de savoir quel était le problème, et la solution est un peu comme cela a été dit dans mes demandes d'extraction où tout le monde m'a dit de supprimer l'objet inutilisé :|

Je vais voir ce qu'il faudrait pour supprimer cette exigence.

Cette page vous a été utile?
0 / 5 - 0 notes