С функциями Javascript Azure в среде выполнения бета-версии я столкнулся с проблемой, когда, если функция возвращает успешный ответ (200, 201), тело ответа, возвращаемое из context.res, возвращается правильно.
Но если для статуса HTTP установлено значение 400 или 404, клиент получает стандартный ответ, например «Плохой запрос», в теле ответа независимо от того, какое тело ответа установлено в функции.
Я могу воспроизвести это даже в автоматически созданной функции сценария Java.
Код (стандартный автоматически сгенерированный код)
module.exports = function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
if (req.query.name || (req.body && req.body.name)) {
context.res = {
// status: 200, /* Defaults to 200 */
body: "Hello " + (req.query.name || req.body.name)
};
}
else {
context.res = {
status: 400,
body: "Please pass a name on the query string or in the request
body"
};
}
context.done();
};
В среде выполнения v1, если имя не указано в запросе или теле запроса, статус HTTP устанавливается на 400 и тело ответа правильно содержит «Пожалуйста, передайте имя в строке запроса или в теле запроса».
В среде выполнения бета-версии для статуса HTTP установлено значение 400, но в теле ответа просто содержится «неверный запрос».
Нужно ли возвращать тело ответа другим способом для бета-версии?