Node.js 如何在Next.js+;Graphql解耦体系结构?

Node.js 如何在Next.js+;Graphql解耦体系结构?,node.js,session,graphql,microservices,next.js,Node.js,Session,Graphql,Microservices,Next.js,我正在构建一个next.js项目,虽然我通常只使用该方法来实现我的GraphQLAPI(使用),但我认为如果我将next.js项目与GraphQLAPI解耦,以便每个服务器都托管在不同的机器上,这可能是一个好主意 但通常我会在GraphQLAPI中实现任何与会话相关的逻辑,使用如下内容:;我认为这是一个很好的做法,因为如果我选择添加另一个前端(可能是移动应用程序或其他东西),它们可以共享相同的会话逻辑。但是,考虑到我正在使用next.js在服务器端呈现内容,如何将用户的会话信息转发到graphq

我正在构建一个next.js项目,虽然我通常只使用该方法来实现我的GraphQLAPI(使用),但我认为如果我将next.js项目与GraphQLAPI解耦,以便每个服务器都托管在不同的机器上,这可能是一个好主意

但通常我会在GraphQLAPI中实现任何与会话相关的逻辑,使用如下内容:;我认为这是一个很好的做法,因为如果我选择添加另一个前端(可能是移动应用程序或其他东西),它们可以共享相同的会话逻辑。但是,考虑到我正在使用next.js在服务器端呈现内容,如何将用户的会话信息转发到graphql服务器?因为next.js服务器不必重做身份验证,对吗


如果架构中也有任何缺陷,请告诉我,我对这一点有点陌生。

使用下一台服务器运行GraphQL服务当然是,所以是的,请将两者分开

让下一个服务器SSR使用users会话呈现包含用户特定内容的页面可能也不是一个好主意,除非您有一些特定的用例,要求所服务的HTML页面中已经包含用户特定的数据。原因如下:

  • SSR呈现将需要大量服务器端计算,因为所有页面都必须重新呈现

  • NextJS正在从
    getInitialPros()
    的工作方式转向使用
    getStaticProps()
    生成一个对所有用户都通用的页面(从v9.3开始),一旦它显示在客户端设备上,就可以直接从GraphQL API加载它的会话相关内容

这种方法通常具有更高的性能和更好的规模

如果您真的想使用“SSR with user session data”(SSR with user session data)路由,您可以从
getServerSideProps(context)
方法开始,其中
context.req
是实际的请求,其中将包含您的所有会话数据(cookie或标头)

然后,您可以从
req
中提取该会话数据,并将其传递给需要身份验证的GraphQL服务器请求