Не удается POST для маршрутизации с senecajs и expressjs - PullRequest
0 голосов
/ 04 сентября 2018

Я пытался настроить бэкэнд с seneca and express. В настоящее время маршруты определены следующим образом:

serviceRoutes: [
    // a list of all supported routes
    {
        pin: 'role:auth,cmd:*',
        prefix: '/api',
        map: {
            login: {
                //GET: true,
                POST: true,
                alias: 'login'
            },
            logout: {
                //GET: true,
                POST: true,
                alias: 'logout'
            },
            status: {
                GET: true
            }
        }
    }
]

Для обработки запросов были добавлены следующие обработчики:

const seneca_instance = seneca()
.add('role:auth,cmd:login', (args, done) => {
    //console.log('Role:auth, cmd:login \n==> ');
    //console.log(args);
    console.log('Login request received');
    console.log(`request$.req? ${Object.keys(args.request$)}`);
    done(args);
    //args.request$.res.end("Logged in");
})
.add('role:auth,cmd:status', (args, done) => {
    //console.log('Role:auth, cmd:status \n==> ');
    //console.log(args.request$);
    //
    args.request$.res.end('Authentication server is up. Status: 200 OK'); // express res
    done(args);
})
.use(seneca_web, web_ctx_config)
.ready(() => {
    const server = seneca_instance.export('web/context')();
    server.listen(config.servicePort, () => {
        console.log('Authentication service started on localhost:4200/');
    });
});

Когда я пытаюсь curl -d '{"username":"uname","password":"pass"}' -H "Content-Type:application/json" http://localhost:4200/api/login, я получаю сообщение об ошибке «Cannot POST to / api / login» (скорее всего, из Express). Я попытался использовать GET, и он работает как положено (когда я пытался) curl http://localhost:4200/api/login. Также /api/status работает как положено (был добавлен для тестирования сервиса).

Что я здесь делаю неправильно?

...