Я пытался настроить бэкэнд с 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
работает как положено (был добавлен для тестирования сервиса).
Что я здесь делаю неправильно?