Apollo-link-rest: Error al ejecutar una mutación sin ningún cuerpo de solicitud

Creado en 28 sept. 2018  ·  5Comentarios  ·  Fuente: apollographql/apollo-link-rest

¿Parece que no puede hacer una solicitud PATCH o POST sin entrada?

Error: Error: [GraphQL mutation using a REST call without a body]. No entrada was detected. Pass bodyKey, or bodyBuilder to the @rest() directive to resolve this.

Mutación:

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

Opciones de Apolo:

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

Comentario más útil

En realidad, para mí input: null no funcionó, pero esto funcionó:

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

Todos 5 comentarios

Creo que puedes hacer esto:

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

En realidad, para mí input: null no funcionó, pero esto funcionó:

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

¿No es esto objetivamente horrible? ¿Hay alguna forma de evitar esto ahora? La documentación dice:

Al realizar una solicitud HTTP POST o PUT, a menudo debe proporcionar un cuerpo de solicitud. Por convención, GraphQL recomienda que nombre sus tipos de entrada como entrada, por lo que, de forma predeterminada, es donde buscaremos un objeto JSON para su cuerpo.

¿No suena esto como si fuéramos conscientes del hecho de que no siempre se necesita un cuerpo?

Hablando como el escritor de esa línea documental, sí, lo sé. Esto simplemente no ha sido una prioridad tan alta para mis casos de uso.

@ d9001 Si observa la solución alternativa de @ Laruxo, puede ver que todo lo que necesita hacer es agregar algunas letras para evitar esta restricción. Si desea contribuir con código para esta función, me complacerá ayudarlo a revisarlo.

Sí, no es que no pudiera hacerlo funcionar. Simplemente me volvió loco descubrir cuál era el problema, y ​​la solución es un poco como se menciona en mis solicitudes de extracción, donde todos me dijeron que eliminara el objeto no utilizado: |

Veré qué se necesitaría para eliminar ese requisito.

¿Fue útil esta página
0 / 5 - 0 calificaciones