Нужна помощь в понимании логики - PullRequest
0 голосов
/ 19 апреля 2020

Может кто-нибудь объяснить мне, как работает эта строка: 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));
    });
}

Это где пользователь настраивается на готовку ie, чего мой код в настоящее время не делает, и сеанс теряется при обновлении sh. Я пытаюсь понять, как сохранить сеансы в Сапере.

1 Ответ

2 голосов
/ 19 апреля 2020

Эта строка вызывает относительный путь: const response = await post (auth/login, {email, password});

Таким образом, URL, который вызывает fetch, выглядит примерно так: http://yourdomain.com/auth/login

Согласно документам, при вызове маршрута, оканчивающегося на. js, происходит то, что Sapper ищет в этом файле функцию с именем метода HTTP-запроса. Больше информации здесь: sapper.svelte.dev/docs#Server_routes

...