next.js 如何确定是从服务器组件还是从路由处理程序调用公共代码

35g0bw71  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(78)

我有一个名为getConnectedUser的通用函数,它具有一些逻辑来检索服务器组件中连接的用户,并在没有用户连接的情况下调用redirect
为了简单性和一致性,我想在我的API路由处理程序中使用相同的函数,但不是重定向它应该抛出错误。
你知道是否有一种方法可以从函数体内部确定它是从服务器组件还是路由处理程序调用的吗?
当然,我可以创建一个变量,或者给函数添加一个参数,但这会更冗长,更容易出错。

w80xi6nr

w80xi6nr1#

1-可以定义两个不同的函数。

async function getConnectedUserOnServerComponent(){}
 async function getConnectedUserOnApiRoute()

字符串
2-您可以将布尔标志传递给函数

async function getConnectedUser(, ,onRoute=false){}


当您在Route上调用该函数时,请使用true标志调用该函数

getConnectedUser(arg1,arg2,true)


根据布尔标志,您可以编写逻辑。
3-如果您在路由上,则可以访问req对象。

async function getConnectedUser(arg1,arg22,req){
    if(req){
       // you are on api route
    }
 }

相关问题