Мне нужно отправить пользовательское сообщение об ошибке в формате JSON из моего экспресс-приложения, обслуживаемое лямбда-функцией, используя serverless-http
Пожалуйста, исправьте меня, если я ошибся, нонасколько я понимаю, нам нужно использовать интеграцию LAMBA_PROXY APIG, чтобы иметь возможность отправлять пользовательские сообщения об ошибках, определенные непосредственно из лямбда-функции.
Это то, что я пробовал до сих пор:
res.status(400).json({ message: 'email already taken' });
serverless.yml
functions:
auth:
handler: src/express/auth/index.handler
name: ${self:service}-auth-${env:STAGE}
# warmup: true
integration: lambda-proxy
memorySize: 128
timeout: 15
events:
- http:
path: /auth/
method: ANY
cors: true
- http:
path: /auth/{any+}
method: ANY
cors: true
это то, что API возвращает (с кодом состояния 400)
<!DOCTYPE html>
Error
Bad Request
Есть ли какие-либо сведения о том, как я могу отправить собственный ответ в формате JSON?
обновление: после дополнительных тестов я обнаружилчто вызов next(error)
не достигает последнего обработчика ошибок
const register = async (req, res, next) {
try {
await verifyEmail(req.body.email);
const user = await Users.register(req.body);
const token = sign(user.attrs, {});
res.json({ token, user });
} catch (e) {
next(e);
}
};
const generalError = async (err, req, res, next) => {
// doesn't reach this part! :(
console.log('generalError handler', JSON.stringify(err));
res.status(errorOut.status).json(errorOut);
};
ApiRouter.post('/register', register);
app.use('/auth', ApiRouter);
app.use(generalError);