рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдореМрдЬреВрджрд╛ рдЖрд░рдИрдПрд╕рдЯреА рдПрдкреАрдЖрдИ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ JSON рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдпреВрдЖрд░рдПрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рд╣реИ?
рдореИрдВ рдЬреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
curl -X POST http://localhost:8000/rest-auth/login/ -d '{}'
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ bodyKey/bodyBuilder
рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдвреВрдВрдв рд░рд╣рд╛ рдерд╛ред
рдореИрдВ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
mutation login ($username: String!, $password: String!) {
login @rest(
method: "POST",
endpoint: "default",
path: "rest-auth/login/",
input: {username: $username, password: $password}
) {
results
}
}
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд░рд╣рддреА рд╣реИ:
[GraphQL mutation using a REST call without a body]. No `input` was detected. Pass bodyKey, or bodyBuilder to the @rest() directive to resolve this.
рдорд╛рдИ рд░реЗрд╕реНрдЯ рд▓рд┐рдВрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
export const restLink = new RestLink({
endpoints: {
default: process.env.REACT_APP_HOST_URL,
},
headers: {
"Content-Type": "application/json"
},
credentials: "same-origin",
})
рдореЗрд░рд╛ рдЧреНрд░рд╛рд╣рдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
const client = new ApolloClient({
link: ApolloLink.from([ stateLink, restLink ]),
cache: cache,
defaultOptions,
})
рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдмреЙрдбреАрдХреА/рдЗрдирдкреБрдЯ рд╡рд╣реА рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред
рдкрд╣рд▓рд╛: рдЖрдк рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдЗрдирдкреБрдЯ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╢рд╛рдпрдж рдЪрд╛рд╣рддреЗ рдереЗ:
mutation login ($username: String!, $password: String!) {
login(input: {username: $username, password: $password}) @rest(
method: "POST",
endpoint: "default",
path: "rest-auth/login/",
) {
results
}
}
рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдЧ рд╣реИ, рдЬрд╣рд╛рдВ "рдЗрдирдкреБрдЯ" рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВред (рдореБрдЭреЗ рдЙрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛)
рдкреНрд░рдпрддреНрди:
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
}
}
рдпрд╣ рдЖрдЦрд┐рд░реА рдЙрджрд╛рд╣рд░рдг рдореВрд▓ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рдРрдк рдореЗрдВ рд╣реИред
@fbartho - рдзрдиреНрдпрд╡рд╛рдж! рдЗрд╕рдиреЗ рдмрд╣реБрдд рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ред рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдореИрдВ рдЧрд▓рддреА рд╕реЗ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдЗрдирдкреБрдЯ рдбрд╛рд▓ рд░рд╣рд╛ рдерд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдмреЙрдбреАрдХреА/рдЗрдирдкреБрдЯ рд╡рд╣реА рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред
рдкрд╣рд▓рд╛: рдЖрдк рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдЗрдирдкреБрдЯ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╢рд╛рдпрдж рдЪрд╛рд╣рддреЗ рдереЗ:
рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдЧ рд╣реИ, рдЬрд╣рд╛рдВ "рдЗрдирдкреБрдЯ" рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВред (рдореБрдЭреЗ рдЙрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛)
рдкреНрд░рдпрддреНрди:
рдпрд╣ рдЖрдЦрд┐рд░реА рдЙрджрд╛рд╣рд░рдг рдореВрд▓ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рдРрдк рдореЗрдВ рд╣реИред