Javascript Nextjs创建一个url,该url只处理没有视图的代码

Javascript Nextjs创建一个url,该url只处理没有视图的代码,javascript,reactjs,next.js,Javascript,Reactjs,Next.js,我正在使用NextJS创建一个新站点,我遇到的问题是关于密码重置验证端点 当用户触发密码重置时,它会转到API,进行所有处理,然后返回到位于/verifyreset的NextJS前端,该前端将代码保存到本地存储中,进行少量处理,然后将其转发到另一个页面 问题是my_app.js中有一个默认布局将组件包装成这样 function MyApp({ Component, pageProps }) { return ( <DefaultLayout><Compo

我正在使用NextJS创建一个新站点,我遇到的问题是关于密码重置验证端点

当用户触发密码重置时,它会转到API,进行所有处理,然后返回到位于
/verifyreset
的NextJS前端,该前端将代码保存到本地存储中,进行少量处理,然后将其转发到另一个页面

问题是my_app.js中有一个默认布局将组件包装成这样

function MyApp({ Component, pageProps }) {
    return (
        <DefaultLayout><Component {...pageProps} /></DefaultLayout>
    );
}
函数MyApp({Component,pageProps}){
返回(
);
}
这意味着布局显示在
/verifyreset
端点上,我只希望该端点处理数据


这有什么办法吗?要使端点能够访问本地存储,但不能成为所谓的“页面”,您必须将
/verifyreset
放在api文件夹中

这就是
Next.js
在他们的文档中所说的:

Any file inside the folder pages/api is mapped to /api/* and will be treated as an API endpoint instead of a page.

参考资料:

我确实部分理解了你的问题,如果你在问题中附加了更多的代码片段,那就很清楚了

无论如何,从你下面的陈述中:

当用户触发密码重置时,它会转到API,完成所有操作 处理,然后将它们返回到 /verifyreset将代码保存到本地存储中,只需执行一点点操作 然后将它们转发到另一页

我的理解是:

  • 用户触发密码重置[比如从PageA开始]
  • 调用API;一些处理发生了
  • 然后,API将用户重定向到/verifyreset页面[假设为PageB]
  • 导航到该页面时,信息将保存到localstorage中
  • 一旦完成,用户将被重定向到另一个页面[比如说PageC]
  • 如果我错了,请纠正我,您的问题是,您如何真正跳过用户查看/验证重置页面,而执行诸如保存到本地存储和其他后台操作之类的操作

    答案1:正在从PageA调用api(请参见1)。将一些数据(JSON或XML)发送到调用函数(在PageA components..)而不是api将用户重定向到前端的/verifyreset页面。根据这些数据,进行处理,完成每件事情后,将用户重定向到PageC。[无需担心PageB,即/verifyreset页]。请在下面查找代码段:

    **API End Point**
    
    async resetPassword(req, res) {
    try {
      const model = model.body || {};
      let data = await PasswordBusiness.reset(model);
      //data needs to have information that you require on frontend
      return res.json({success: true, data: data});
    } catch (error) {
      return res.json({success: false, error: error});
    }
    }
    
    
    ** Frontend - pageA **
    
    
    import Router from 'next/router';
    
    const resetPassword = (model) => {
      callApiEndPoint(model).then(data) {
       // do what you want to do with data
    
       //finally navigate to page c
       Router.push('url-to-page-c');
    
      });
    };
    
    
    return <button onClick={resetPassword}> Reset </button>
    
    **API端点**
    异步重置密码(req、res){
    试一试{
    const model=model.body | |{};
    let data=wait PasswordBusiness.reset(model);
    //数据需要在前端包含您需要的信息
    返回res.json({success:true,data:data});
    }捕获(错误){
    返回res.json({success:false,error:error});
    }
    }
    **前端-pageA**
    从“下一个/路由器”导入路由器;
    const resetPassword=(型号)=>{
    callApiEndPoint(模型)。然后(数据){
    //对数据执行您想要执行的操作
    //最后导航到c页
    Router.push('url-to-page-c');
    });
    };
    返回复位
    

    答案2:如果您需要从API重定向到页面[我认为您不需要这样做],在API端完成操作/处理后,使用一些带有数据的查询参数(如果它们不是易受安全攻击的数据)将用户直接重定向到pageC。e、 g./pagec?token=sometokens&otherinfos=otherinfos,在pagec上做事情。完成后,从页面中删除查询字符串,而不刷新页面。

    我认为API路由没有访问localstorage的权限?@CodeSauce我还没有尝试过,但如果是这样的话,可能会将该过程更改为在API端点执行某些操作,并返回到任何页面,然后在此处保存您的localstorage。你能提供一些代码吗?这可能有助于我了解它的大局。