0

有人可以向我解释这条线是如何工作的: https ://github.com/sveltejs/realworld/blob/master/src/routes/login/index.svelte#L13

const response = await post(授权/登录, { email, password });

post正在从 调用utils.js,即:

实用程序.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)传入的,因为我们只是从上面获取这个文件而不传递任何参数。

身份验证/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 中保持会话。

4

1 回答 1

2

此行正在调用相对路径: const response = await post( auth/login, { email, password });

所以 fetch 调用的 url 类似于:http: //yourdomain.com/auth/login

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

于 2020-04-19T17:24:53.093 回答