需要帮助理解逻辑

问题描述 投票:0回答:1

有人可以向我解释此行的工作原理:https://github.com/sveltejs/realworld/blob/master/src/routes/login/index.svelte#L13

[const response = await post( auth / login , { email, password });

post正在从utils.js调用,这是:

utils.js

export function post(endpoint, data) {
    return fetch(endpoint, {
        method: 'POST',
        credentials: 'include',
        body: JSON.stringify(data),
        headers: {
            'Content-Type': 'application/json'
        }
    }).then(r => r.json());
}

因此函数进入此处,然后获取所提供的端点auth/login

这使我感到困惑,因为auth/login不是端点,它是在auth/login.js下导出函数的文件。 auth/login.js中的第二个帖子功能是否会自动调用?我不确定(req, res)也要传递到哪里,因为我们只是从上方获取此文件,而不传递任何参数。

auth / login.js

import * as api from 'api.js';

export function post(req, res) {
    const user = req.body;

    api.post('users/login', { user }).then(response => {
        if (response.user) req.session.user = response.user;
        res.setHeader('Content-Type', 'application/json');

        res.end(JSON.stringify(response));
    });
}

这是在用户中设置Cookie的位置,我的代码当前未在其中设置该用户,并且刷新后会话将丢失。我正在尝试了解如何在Sapper中保持会话。

javascript svelte sapper svelte-store
1个回答
2
投票

此行正在调用相对路径:const response =等待帖子(auth/login,{电子邮件,密码});

因此,fetch正在调用的url类似于:http://yourdomain.com/auth/login

根据文档,当调用以.js结尾的路由时,会发生什么情况,即Sapper在该文件上查找具有HTTP请求方法名称的函数。此处提供更多信息:sapper.svelte.dev/docs#Server_routes

© www.soinside.com 2019 - 2024. All rights reserved.