我正在尝试使用GraphQL和Node.js在我的宠物项目中实施用户电子邮件验证。
我已经有signUp解析器来发送验证令牌,但是我刚刚了解,当用户单击链接时,无法将数据从电子邮件发送到下一个使用该令牌并验证电子邮件的GraphQL解析器。
所以问题是:我应该让REST端点/verify
来完成这项工作,还是有一种使用/graphql
端点的方法
答案 0 :(得分:1)
如果您使用单独的/verify
端点,则很可能在处理请求后也希望将用户重定向回您的站点。一种方法是有效逆转此流程,链接到您的网站,然后让您的页面提出必要的GraphQL请求。
或者,您可以通过电子邮件中的链接调用verify
解析器。 express-graphql
将同时处理POST
和GET
请求。但是,使用此方法时需要牢记以下几点:
这是一个基本示例:
const typeDefs = `
type Query {
verify: Boolean # Can be any nullable scalar
}
`
const resolvers = {
Query: {
verify: (root, args, ctx) => {
// Your verification logic
ctx.res.redirect('https://www.google.com')
}
}
}
const schema = makeExecutableSchema({ typeDefs, resolvers })
app.use('/graphql', graphqlHTTP((req, res) => ({
schema: MyGraphQLSchema,
graphiql: false,
// Inject the response object into the context
context: { req, res },
})))
app.listen(4000)
然后您就可以在浏览器中导航至该网址:
http://localhost:4000/graphql?query={verify}