Apollo-link-rest: Kesalahan saat menjalankan mutasi tanpa badan permintaan apa pun

Dibuat pada 28 Sep 2018  ·  5Komentar  ·  Sumber: apollographql/apollo-link-rest

Tampaknya Anda tidak dapat membuat permintaan PATCH atau POST tanpa input?

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

Mutasi:

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

Opsi Apollo:

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

Komentar yang paling membantu

Sebenarnya bagi saya input: null tidak berfungsi, tetapi ini berhasil:

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

Semua 5 komentar

Saya pikir Anda bisa melakukan ini:

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

Sebenarnya bagi saya input: null tidak berfungsi, tetapi ini berhasil:

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

Apakah ini tidak secara objektif mengerikan? Apakah ada cara untuk mengatasi ini sekarang? Dokumentasi mengatakan:

Saat membuat permintaan HTTP POST atau PUT, Anda sering kali harus menyediakan badan permintaan. Dengan konvensi, GraphQL menyarankan Anda memberi nama tipe input Anda sebagai input, jadi secara default di situlah kami akan mencari untuk menemukan objek JSON untuk tubuh Anda.

Bukankah ini terdengar seolah-olah kita menyadari fakta bahwa Anda tidak selalu membutuhkan tubuh?

Berbicara sebagai penulis baris dokumen itu, ya, saya sadar. Ini bukan prioritas tinggi untuk kasus penggunaan saya.

@d9001 Jika Anda melihat solusi @Laruxo, Anda dapat melihat bahwa yang perlu Anda lakukan hanyalah menambahkan beberapa huruf untuk melewati batasan ini. Jika Anda ingin menyumbangkan kode untuk fitur ini, saya akan dengan senang hati membantu meninjaunya.

Ya, bukan karena saya tidak bisa membuatnya bekerja. Itu hanya membuat saya gila mencari tahu apa masalahnya, dan solusinya agak meh seperti yang disebutkan dalam permintaan tarik saya di mana semua orang menyuruh saya untuk menghapus objek yang tidak digunakan :|

Saya akan melihat apa yang diperlukan untuk menghapus persyaratan itu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat