Как правильно преобразовать ответы об ошибках серверной части с помощью преобразователя ответов или специальной политикиJavascript

Форум по Javascript
Ответить
Anonymous
 Как правильно преобразовать ответы об ошибках серверной части с помощью преобразователя ответов или специальной политики

Сообщение Anonymous »

Я работаю с Express Gateway для проксирования запросов к серверной службе и хочу преобразовать ответы об ошибках в общий формат, например:

Код: Выделить всё

const errorResponse = {
timestamp: new Date().toISOString(),
status: status,
errorCode: errorCode,
message: message,
details: details
};

Я попробовал использовать встроенную политику преобразователя ответов в моем шлюзе.config.yaml:

Код: Выделить всё

pipelines:
default:
apiEndpoints:
- companyApi
policies:
- log:
- action:
message: 'Request received: ${req.method} ${req.url}'
- proxy:
- action:
serviceEndpoint: backendService
changeOrigin: true
- response-transformer:
- action:
body:
# Tried adding transformations here but no effect

Но ответ серверной части возвращается как есть; никакой трансформации не происходит. Затем я также попытался создать собственную политику оболочки ответа для перехвата и изменения ответа, но, похоже, промежуточное программное обеспечение также не применяется и не меняет ответ.

Код: Выделить всё

response-wrapper policy

policy: () => {
return (req, res, next) => {
const originalSend = res.send.bind(res);
res.send = (body) => {
let backendMessage;
try {
backendMessage = typeof body === 'string' ? JSON.parse(body) : body;
} catch (e) {
backendMessage = body.toString();
}
const wrappedResponse = {
status: 'success',
message: backendMessage
};
res.set('Content-Type', 'application/json');
return originalSend(JSON.stringify(wrappedResponse));
};
next();
};
}
Как правильно перехватывать и преобразовывать ответы об ошибках, поступающие от прокси-сервера в Express Gateway? Ответ-трансформер не подходит для этого сценария или я что-то упускаю в конфигурации?

Подробнее здесь: https://stackoverflow.com/questions/797 ... sformer-or
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»