Apollo-link-rest: Kemampuan untuk meneruskan data ke permintaan POST

Dibuat pada 16 Jun 2018  ·  3Komentar  ·  Sumber: apollographql/apollo-link-rest

Saya memiliki REST API yang membutuhkan data untuk diposting sebagai JSON. Itu tidak menerima parameter url. Saya telah melihat ke dalam dokumentasi, tetapi sepertinya tidak membicarakan hal ini. Apakah ini didukung?

Berikut adalah contoh dari apa yang saya coba capai:

curl -X POST http://localhost:8000/rest-auth/login/ -d '{}'

Terima kasih sebelumnya!

question❔

Komentar yang paling membantu

Anda benar, bodyKey/input adalah yang Anda butuhkan.

Pertama: Anda memberikan input ke arahan, jadi Anda mungkin ingin:

mutation login ($username: String!, $password: String!) {
  login(input: {username: $username, password: $password}) @rest(
    method: "POST",
    endpoint: "default",
    path: "rest-auth/login/", 
  ) {
    results
  }
}

Tapi itu mungkin tidak berhasil, saya pikir kami memiliki bug, di mana "input" tidak dapat dibangun secara dinamis seperti yang Anda lakukan. (Saya ingin bug itu diperbaiki)

Mencoba:

input LoginInput { # you can omit this whole declaration with ApolloLink Rest
  username: String!
  password: String!
}

mutation login(input: LoginInput!) {
  login(input: $input) @rest(
    method: "POST",
    endpoint: "default", # if you only have 1 endpoint, you can omit this too if you create your rest link the right way
    path: "rest-auth/login/", 
  ) {
    results
  }
}

Contoh terakhir ini pada dasarnya adalah apa yang dimiliki aplikasi saya.

Semua 3 komentar

Saya pikir bodyKey/bodyBuilder adalah apa yang saya cari.

Saya telah mencoba melakukan sesuatu seperti ini:

mutation login ($username: String!, $password: String!) {
  login @rest(
    method: "POST",
    endpoint: "default",
    path: "rest-auth/login/", 
    input: {username: $username, password: $password}
  ) {
    results
  }
}

Tapi saya terus mendapatkan kesalahan ini:

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

Tautan Istirahat saya terlihat seperti ini:

export const restLink = new RestLink({
  endpoints: {
    default: process.env.REACT_APP_HOST_URL,
  },
  headers: {
    "Content-Type": "application/json"
  },
  credentials: "same-origin",
})

Klien saya terlihat seperti ini:

const client = new ApolloClient({
  link: ApolloLink.from([ stateLink, restLink ]),
  cache: cache,
  defaultOptions,
})

Anda benar, bodyKey/input adalah yang Anda butuhkan.

Pertama: Anda memberikan input ke arahan, jadi Anda mungkin ingin:

mutation login ($username: String!, $password: String!) {
  login(input: {username: $username, password: $password}) @rest(
    method: "POST",
    endpoint: "default",
    path: "rest-auth/login/", 
  ) {
    results
  }
}

Tapi itu mungkin tidak berhasil, saya pikir kami memiliki bug, di mana "input" tidak dapat dibangun secara dinamis seperti yang Anda lakukan. (Saya ingin bug itu diperbaiki)

Mencoba:

input LoginInput { # you can omit this whole declaration with ApolloLink Rest
  username: String!
  password: String!
}

mutation login(input: LoginInput!) {
  login(input: $input) @rest(
    method: "POST",
    endpoint: "default", # if you only have 1 endpoint, you can omit this too if you create your rest link the right way
    path: "rest-auth/login/", 
  ) {
    results
  }
}

Contoh terakhir ini pada dasarnya adalah apa yang dimiliki aplikasi saya.

@fbartho - terima kasih! Ini banyak menjelaskan. Anda benar, saya tidak sengaja memasukkan input ke dalam arahan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat