Nodejs Express отправляет res.render и res.json одновременно - PullRequest
0 голосов
/ 08 февраля 2019

Как я могу отправить res.render и res.json одновременно в NodeJS с помощью Express.Я хотел что-то вроде:

app.get(basePath, function (req, res, next) {
    //More stuff
    res.json({token: token});
    res.render(path.join(publicPath, '/main'), 
        {mv: mv});
});

, но он дает мне только токен без рендеринга страницы.Используя этот метод:

app.get(basePath, function (req, res, next) {
    //More stuff
    res.render(path.join(publicPath, '/main'), 
    {mv: mv, token: token});
});

У меня нет доступа к параметру токена (я должен хранить его в клиенте)

Идея состоит в том, чтобы не использовать 2 запроса (один на страницутестирование токена и одного для генерации нового токена (тестирование старого).И избегайте иметь скрытый промежуток с токеном в каждом представлении.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

HTTP использует цикл, который требует один ответ на запрос.Когда клиент отправляет запрос, сервер должен отправить клиенту только один ответ.Таким образом, вам нужно отправить только один ответ клиенту: либо res.render(), либо res.json().

Если вы хотите установить некоторые данные, например токен аутентификации, вы можете установить в своем заголовке, используя res.set() или res.header(). документация

app.get(basePath, function (req, res, next) {

    //More Stuff ...

    res.header('token', JSON.stringify({ token: 'token' })); //use encrypted token
    res.render(path.join(publicPath, '/main'), { mv: mv });
});

Чтобы установить заголовок для всех маршрутизаторов или определенного набора маршрутизаторов, вы можете использовать middleware

0 голосов
/ 08 февраля 2019

1) использовать промежуточное ПО для генерации токена 2) быстрый совет, {token:token} соответствует {token}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...