Apollo-link-rest: リクエストボディなしでミューテーションを実行するとエラーが発生する

作成日 2018年09月28日  ·  5コメント  ·  ソース: apollographql/apollo-link-rest

入力なしでPATCHまたはPOSTリクエストを行うことはできないようですか?

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

突然変異:

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

アポロオプション:

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

最も参考になるコメント

実際、私にとってinput: nullは機能しません

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

全てのコメント5件

あなたがこれを行うことができると

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

実際、私にとってinput: nullは機能しません

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

これは客観的に恐ろしいことではありませんか? 今これを回避する方法はありますか? ドキュメントには次のように書かれています。

POSTまたはPUTHTTPリクエストを行う場合、多くの場合、リクエスト本文を提供する必要があります。 慣例により、GraphQLでは入力タイプに入力として名前を付けることをお勧めします。そのため、デフォルトでは、ここでボディのJSONオブジェクトを検索します。

これは、あなたがいつも体を必要としないという事実を私たちが知っているように聞こえませんか?

そのドキュメントラインのライターとして言えば、ええ、私は知っています。 これは、私のユースケースではそれほど優先度が高くありませんでした。

@ d9001 @Laruxoの回避策を見ると、この制約を回避するために数文字を追加するだけでよいことがわかります。 この機能のコードを提供したい場合は、レビューのお手伝いをさせていただきます。

ええ、それは私がそれを動かすことができなかったということではありません。 それは問題が何であるかを理解するのに私を狂わせました、そして解決策は私のプルリクエストで呼び出されたようにちょっとめちゃくちゃです、そこで誰もが未使用のオブジェクトを削除するように私に言いました:|

その要件を削除するために何が必要かを見ていきます。

このページは役に立ちましたか?
0 / 5 - 0 評価